Recent

Author Topic: Deep Platformer — looking for people for cross-platform testing  (Read 8854 times)

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
For some time I've been working on a simple 2D platform game called Deep Platformer.

In short, this project was initially a simple PoC, but over time it has grown. It is an attempt to create something meaningful without using special libraries to create games — only basic classes from LCL. Due to the fact that it is not a full-fledged game (because of accepted restrictions), I call it just a technological demonstration. The game does not require installation (it is completely portable) and does not save any data on the disk. I is completely free, sources are open, under the GPL3 license.

In the game, we move a small hero and cross the multilayered levels in search of fireflies to collect and looking for exit (simple requirements). The game consists of several worlds, each of them will contain several levels. In addition to the story itself, the game has an intro, menu, outro, staff screen and supports animations (intro, outro, in-level cutscenes etc.). The game also has a built-in cheat mode (that allows to test its functionality more easily and quickly) and many, many more.

More information about the game, gameplay, key mappings etc. can be found in the readme.txt file.


The game code is practically finished, however the content of the game is not ready yet. It was left to finish the levels and add the missing animations. That's what I'm doing right now. So please do not be surprised by the simplicity of the current levels — they will be much nicer, more complex and more interesting.

Code is object-oriented and written in such a way that most of it is not dependent on the platform. I would like very much to let the game be compiled on different platforms and work on them just as well as on Windows. I use Windows only, and I do not know other platforms enough to be able to properly port the code.

Currently, the game code is adapted for Windows and works properly on XP and higher. It also has patches for Unix systems on which the game starts and works, but the screen is not rendered correctly. Other problems may also exist, but I do not have such information.

That is why I am looking for people who would help me with the porting of the code. Of course, anyone who wants to, can download the source and test the game — on any platform, including Windows. I am interested in the following platforms:
  • Windows
  • Linux
  • FreeBSD
  • macOS/OSX
So, I add to the attachments current game sources and binary files with game content (fonts, levels, animations, etc.). The project consists of 35 units, about 14,000 LoC. I know that it's a lot, so in the next post I will write about where is the code specific for platforms and where the code responsible for image processing is located, which on Linux is not working properly.

If you have any questions about the game or the source code, ask me boldly. I am here every day, so I will answer as much fast and as detailed as I can.

Everyone who requests it, I will add to the list above (for clarity). So far, there is no repository, so this thread must be enough. Of course, everyone who will help with this project will be placed in the staff screen.
« Last Edit: April 23, 2019, 10:53:14 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 917
    • Burdjia
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #1 on: April 03, 2019, 06:55:27 pm »
I can test it on Xubuntu 18.04 LTS 64bits.  8)
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #2 on: April 03, 2019, 07:21:24 pm »
All images used in the game are 4-bit bitmaps, some additionally use RLE for compression. They were all prepared in the GIMP program. To store them in memory, the game uses the TBitmapBuffer class, which inherits from TBitmap, but does not extend it with additional functionalities.

The game uses back buffers in the form of TBitmapBuffer objects, on which the game frames are rendered. For rendering frames and bitmap processing, the TPainter class from the Platformer.Painter.pp unit is indirectly used.

Ultimately, the TCanvas.CopyRect method is used to copy parts of level layers, with the possibility of scaling and without antialiasing support; and TPainter.CopyBuffer to copy images without scaling (it is faster than TCanvas.Draw). All custom bitmap processing methods use ScanLine.

The TBitmapBuffer class is located in the Platformer.Types.pp module, as well as the record specifying a single pixel and their array (these types are used in conjunction with ScanLine).

So, that's all when it comes to bitmaps.


The game should look like the attached screenshot, maintain 60fps and the load should not be greater than several dozen percent. On my 11-year-old computer with Windows XP 32-bit, it maintains about 50% (with the default window size, which is 672x384 pixels), much much less on the better computer with Windows 7 64-bit (with Code2Quad).

The game works like NES, so a load of more than 100% will result in a decrease in FPS, and at the same time in the flow of the animation (it's intended).


@Ñuño_Martínez: go ahead. 8-)

For the built-in cheat mode to be active from the very beginning, the game should be run with the cheat on parameters pair that are currently in the .lpi file (or in the Run Parameters window if you prefer). Other parameters that can be used are described in the readme.txt file.
« Last Edit: April 03, 2019, 09:46:47 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

mischi

  • Full Member
  • ***
  • Posts: 122
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #3 on: April 03, 2019, 07:24:37 pm »
macOS here.

How about a source code repository with git, subversion or similar with releases, bug tracker and so on?

MiSchi

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #4 on: April 03, 2019, 07:36:11 pm »
@mischi: I will use the repository only for the publication of the finished game, because I really hate Git (I know, it is silly), and I do not intend to develop this game further. If someone wants to develop it, he will be able to make a fork and do whatever he wants.

I am used to discussions on the forums, so it would be more convenient for me to discuss everything here.
« Last Edit: April 03, 2019, 09:40:35 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

sstvmaster

  • Full Member
  • ***
  • Posts: 122
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #5 on: April 03, 2019, 07:39:35 pm »
Thanks, cool.

My System:
- Windows 7 32bit
- Pentium Dual-Core T4500 @ 2.30GHz
- 4 GB DDR2
- GPU GM45
- Samsung EVO 850

- CPU usage 50%
- 60 FPS

Compiled with Laz 2.0.0
« Last Edit: April 03, 2019, 07:41:12 pm by sstvmaster »
Lazarus 2.0.4 x32
Lazarus 2.1.0 Trunk x32
OS Win 7 32bit

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #6 on: April 03, 2019, 07:43:32 pm »
@sstvmaster: super.

The game always uses the full power of one CPU core, due to the long frame rendering time (from a few to over a dozen milliseconds). For this reason, I could not use Sleep and save the CPU power. Works almost identically like NES. 8)
« Last Edit: April 03, 2019, 07:47:58 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 917
    • Burdjia
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #7 on: April 04, 2019, 11:19:11 am »
Loading the project on Lazarus 1.8 on Xubuntu 18.04.2 LTS gives next error:
Quote
Stream=TGameForm: Raíz=:TGameForm
Error reading TGameForm.DoubleBuffered: Unknown property: "DoubleBuffered"
Posición del stream: 4096
Anyway it compiles with a collection of warnings (Platformer.Painter.pp(xx,xx) Warning: Symbol "ScanLine" is not portable) and hints (Platformer.Window.pp(xx,zz) Hint: Parameter "XXXX" not used).

When running the compiled game, it just raises an exception: Unknown Property: "DoubleBuffered".

(...) I really hate Git (I know, it is silly) (...)
No, it isn't.  I also don't like Git nor GitHub, I prefer SourceForge (the new owners improved a lot the platform).  I don't understand the way Git(Hub) organizes the stuff, and don't know how to create a web page, where are the downloads, the bug tracker...
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

dsiders

  • Full Member
  • ***
  • Posts: 220
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #8 on: April 04, 2019, 11:33:31 am »
(...) I really hate Git (I know, it is silly) (...)
No, it isn't.  I also don't like Git nor GitHub, I prefer SourceForge (the new owners improved a lot the platform).  I don't understand the way Git(Hub) organizes the stuff, and don't know how to create a web page, where are the downloads, the bug tracker...

Thank you. Finally, someone else said this out loud. I always feel like an Idiot when I try to figure out Git. Glad it's not just me...
Lazarus 2.0.4 / FPC 3.0.4 / Windows 8.1 64-bit

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #9 on: April 04, 2019, 03:35:46 pm »
Loading the project on Lazarus 1.8 on Xubuntu 18.04.2 LTS gives next error:
Quote
Stream=TGameForm: Raíz=:TGameForm
Error reading TGameForm.DoubleBuffered: Unknown property: "DoubleBuffered"
Posición del stream: 4096

I'm developing this game in Lazarus 2.0.0 (under Windows), where the DoubleBuffered property is published and stored in the .lfm file (because I changed its value few times during testing). Earlier, this property was public. If you want to compile this game in older IDE with older LCL, you need to remove this property from .lfm file.

Quote
Warning: Symbol "ScanLine" is not portable

ScanLine is declared with platform modifier, so the compiler always generates warnings about it. Can I avoid it?

Quote
Hint: Parameter "XXXX" not used

All hints about unused parameters belongs to the events of the GameForm window. I don't use the event parameters (because I don't need to use parameters like Sender), so ignore these hints.

Quote
When running the compiled game, it just raises an exception: Unknown Property: "DoubleBuffered".

Just remove this property from the Platformer.Window.lfm file and recompile the project:

Code: Pascal  [Select]
  1. object GameForm: TGameForm
  2.   Cursor = crSizeAll
  3.   Left = 168
  4.   Height = 384
  5.   Top = 171
  6.   Width = 672
  7.   BorderIcons = []
  8.   BorderStyle = bsNone
  9.   Caption = 'Deep Platformer'
  10.   Color = clBlack
  11.   DoubleBuffered = True // remove this line
  12.   FormStyle = fsStayOnTop
  13.   Icon.Data = {
  14.     ..


Thank you. Finally, someone else said this out loud.

I'm a single developer, I'm working alone, so I don't need this kind of software. In my case, using any of subversion system is just a waste of time and energy.
« Last Edit: April 04, 2019, 03:56:33 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #10 on: April 04, 2019, 04:22:38 pm »
One more thing — in addition to the game itself, the project also consists of a set of five tools in form of simple console applications, used to generate bitmaps and binary files:
  • Font Generator — to generate binary files with fonts (.font files),
  • Layer Generator — to generate bitmaps with level layers (.bmp files),
  • Level Generator — to generate binary files with levels (.level files),
  • Movie Generator — to generate binary files with movies (.movie and .cutscene files),
  • Title Screen Generator — to generate binary files with title screens (.screen files).
These tools will also need to be tested on other platforms, but first we have to test the code of the game itself. Each generator also has a readme.txt file with a description of how to use it.

Until then, I will write a simple window application (simple manager) that will make it easier to use these generators (so that we can click few times instead of typing long parameters in the console).
« Last Edit: April 04, 2019, 04:27:39 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

Thausand

  • Full Member
  • ***
  • Posts: 234
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #11 on: April 04, 2019, 05:06:09 pm »
That is why I am looking for people who would help me with the porting of the code. Of course, anyone who wants to, can download the source and test the game — on any platform, including Windows. I am interested in the following platforms:
I not sure i help. i try game raspbian pi and get error. Graphic no good is ok but error no ok ?

You game have debug i make on ? Or have add my ?

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #12 on: April 04, 2019, 06:05:51 pm »
@Thausand: the game code is not for Raspberry, I don't know if it should be, because I don't use this hardware. I am interested in platforms used on PC — I mentioned which ones. But still I don't understand what you're writing about. Try using a translator (e.g. from Google), instead of trying to write yourself. 8)

I know that many would like to play with this project, but it is not small and obvious. Therefore, I would prefer code-related corrections to be suggested by experienced programmers.


Update: I updated the attachments in the first post, adding sources with no problems with DoubleBuffered (I removed this property from the form file). I think it will be a good idea to keep the latest version of the code in the first post, so that you do not have to search the entire thread.
« Last Edit: April 04, 2019, 07:58:22 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)

Thausand

  • Full Member
  • ***
  • Posts: 234
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #13 on: April 04, 2019, 08:33:06 pm »
@Thausand: the game code is not for Raspberry, I don't know if it should be, because I don't use this hardware. I am interested in platforms used on PC — I mentioned which ones.

write you:

Currently, the game code is adapted for Windows and works properly on XP and higher. It also has patches for Unix systems on which the game starts and works, but the screen is not rendered correctly. Other problems may also exist, but I do not have such information.

That is why I am looking for people who would help me with the porting of the code. Of course, anyone who wants to, can download the source and test the game — on any platform, including Windows. I am interested in the following platforms:
  • Windows
  • Linux
  • FreeBSD
  • macOS/OSX
Raspberry pi = pc = linux

Only differ processor. i386, x86-64, ARM, PPC. all PC. PC = Personal Computer. Not alone windows or i386 :)

Quote
But still I don't understand what you're writing about.
write you: "Other problems may also exist".

Then i say what problem have i and give log and you not want know ? Is ok if not want know but i think error bad. memory error.

Quote
Try using a translator (e.g. from Google), instead of trying to write yourself. 8)
Bing write:
That's all nice and nice to use a translator, but I don't learn anything about it, and at least it doesn't make me better to write English teaching.


I write:
Use translator not help write better English and not learn ever

You bing crazy !!!!! I not want teach, i want learn better write :D

I know i bad english. I sorry for that. I learn new word any day. Friend help me and write here help me. Write computer and pascal i know many word. If, then, for, next, procedure, inheritance. all english. Translator many confused use Pascal and computer word.   :'(
« Last Edit: April 04, 2019, 08:38:52 pm by Thausand »

furious programming

  • Sr. Member
  • ****
  • Posts: 354
  • I click a little.
Re: Deep Platformer — looking for people for cross-platform testing
« Reply #14 on: April 04, 2019, 08:43:43 pm »
Only differ processor. i386, x86-64, ARM, PPC. all PC. PC = Personal Computer. Not alone windows or i386 :)

I did not mean such personal computers, but ok — if you want to test, go ahead. 8)

Quote
Is ok if not want know but i think error bad. memory error.

Yep, memory leaks are a problem, but there are no leaks under Windows. All objects are properly released when they are no longer needed. I do not know why this is happening, I do not know Raspberry Pi, so I can only advise you to check the game under the debugger and find out where the problem is.

@Ñuño_Martínez: can you confirm or deny the existence of memory leaks under Xubuntu?
« Last Edit: April 04, 2019, 08:45:41 pm by furious programming »
Lazarus 2.0.4 with FPC 3.0.4, Windows XP (all 32-bit)