VOGONS


First post, by twelve_diaries

User metadata
Rank Newbie
Rank
Newbie

Greetings,

I am not here to advertise!
I have released a *free* game called BIRDS on itch.io.
I purposely made it so that you could run it on older machines under Windows 9x/ME without the need for hardware acceleration.
This means that the game also runs on a VM, and I have tested it on one running Windows ME (32-bit).

Here is the link to the game: officina-dta.itch.io/birds

With this post I intend to get 2 types of feedback:
1 - If you have an older machine, ideally a Pentium-based running 95 or 98, could you do me the favour of testing the game on it and telling me how well it ran?
It is meant to run at 60fps, 320x240 window, 24-bit pixel colour (for the window). It runs in Windows-mode, not DOS.
The game requires no installation and it weighs less than 1 MB unpacked.
2 - Secondly, could you tell me your experience with the game? Any feedback is appreciated, and please tell me how far into the game you got and what you liked or disliked about it.
Don't be shy with your criticisms.

My game was developed using a custom engine I have been working on for a while and soon enough, I hope, it'll be optimised enough that I can target any machine. Because it software renders and is very lightweight on resources, I have full freedom to port it anywhere and I won't be contributing to throwing away otherwise perfectly fine hardware just because Microsoft or Apple or any other big corp said so - a problem which I'm sure you folks know all about just as well as I do.
Secondly, because I make sure that my engine runs on a VM and older Windows versions, I won't be directly contributing to Microsoft's monopoly.
There are still many things left to optimise and I will do so regularly on my following releases.
The C code was compiled using TCC (Tiny C Compiler) on Windows, but I don't know what kind of x86 code it generates.
I wrote some draw routines in i386-level ASM and assembled using NASM, so there is a chance it may run on a 386, but due to using the Windows API + 24-bit colour, I'm sure it wouldn't run very well at all.

Lastly, I will remain vigilant to this thread for a while and answer any questions you may want to ask.
I hope to hear from you all soon! Have fun!

Reply 4 of 10, by twelve_diaries

User metadata
Rank Newbie
Rank
Newbie

Hello elszgensa, good observation! It was in my plans to make the switch to 8-bit. My engine's rendering code predates this game and it used true-colour only. My next step will be to target paletted 256-colour and possibly also get it running on DOS, I just couldn't make the switch in time for this game. 😀 I believe the 24-bit colour depth is the biggest bottleneck to my engine's performance.

My next game will almost certainly be 256-colour 320x200, whether I get it running on DOS or not.

Thank you for your reply.

Reply 5 of 10, by elszgensa

User metadata
Rank Member
Rank
Member

About dependencies - I noticed you're using msvcrt.dll, which some early Windows versions shipped did not ship with. I imagine most people would have already added that since almost everything requires it but it may be worth mentioning in the readme regardless.

You seem to always be loading opengl.dll, while some cards installed their own OpenGL ICD under a different name. I don't recall off the top of my head whether all Windows shipped with a generic opengl.dll; if so then that's a good lowest common denominator to fall back to, but if not then you might want to look up how to identify and use other GL drivers. (One of my machines has that quirk, I'll let you know how it went after I get around to testing it.)

For the record, your Linux build requires glibc, specifically, and won't run on e.g. musl-based systems. But don't waste time on this, I freely admit these are a bit of an oddball setup. :p (Unless you really, really want to. I hear cosmopolitan libc solves this particular problem.)

And a final nitpick - downloading "BIRDS" and ending up with a file named "passr" is a bit unexpected and unnecessary. I guess inattentive people with less organized download directories might have trouble finding the file.

Reply 6 of 10, by twelve_diaries

User metadata
Rank Newbie
Rank
Newbie

elszgensa, your feedback is great! I really appreciate it.

I wasn't sure about msvcrt.dll. In retrospect I should have run depends.exe on it. I trusted tcc to be pretty lean and since it ran on a raw WinME VM, I expected the requirements to be only whatever Windows truly needs.
On my next release, if I get it running on DOS, I may not get dealt with this msvcrt.dll problem, since NT users are guaranteed to have it and 9x people will just run the DOS version instead.

The OpenGL dependency is, admittedly, shameful. As I said, my rendering code predated the game and on GNU/Linux, where I develop, there will always be OGL support. Plus, it may be more performant than raw X11 due to its decreased overhead. On Windows, however, the less I had to deal with their API, the better. I never liked the whole GDI bitmap mess, so I picked wingl instead for dealing with the problem fast (it really only sets up the context and glDrawPixels the framebuffer...). I believe 98 is guaranteed to come with OGL. Additinally, I'm not sure of how much extra overhead GDI would add. It is very Object-oriented with too many passes. I don't think it was designed with games in mind. I plan to offer both GDI- and OGL- versions in future releases, once I bring myself to support GDI.

The GNU/Linux version isn't meant to be compatible with retro hardware. The version numbering scheme they use on their libraries is a nightmare. An even greater nightmare would be to support 32-bit. I love the system, but they really dropped the ball here. If they supported binaries just like windows does right out of the box and if they focused on portable binaries FIRST as opposed to UNIX-style "install the program all over system", there would be no need for >6 major package managers. It makes sense if you compile all the software you wish to run, but it is a nightmare for both proprietary software and for the user's convenience. A real shame...

> And a final nitpick - downloading "BIRDS" and ending up with a file named "passr" is a bit unexpected and unnecessary. I guess inattentive people with less organized download directories might have trouble finding the file.

Good catch. It was due to supporting 2 languages. Perhaps having two ZIPs with renamed files would be better. I will give it some thought.

Reply 8 of 10, by zyzzle

User metadata
Rank Member
Rank
Member

Please try to get it working in DOS. It's the perfect DOS game. I appreciate your efforts and always like to see new 'retro' homebrew stuff. This is great, frenetic action. As has been stated above, you can easily convert the colors to 8-bit and this wouldn't even degrade the quality of the game.

The fact that it's so small and only for Windows is almost oxymoronic. Try to get a DJGPP compile of it working. Or even a true 16-bit executable for DOS.

Reply 9 of 10, by elszgensa

User metadata
Rank Member
Rank
Member

Dzzee uses mesa's OpenGL implementation for its DOS build - ask thp how it's done. It's still gonna be a bit of a resource hog compared to not using OpenGL in the first place... but at least it'll work at all.

Reply 10 of 10, by twelve_diaries

User metadata
Rank Newbie
Rank
Newbie
zyzzle wrote on 2024-03-20, 07:31:

Please try to get it working in DOS. It's the perfect DOS game. I appreciate your efforts and always like to see new 'retro' homebrew stuff. This is great, frenetic action. As has been stated above, you can easily convert the colors to 8-bit and this wouldn't even degrade the quality of the game.

The fact that it's so small and only for Windows is almost oxymoronic. Try to get a DJGPP compile of it working. Or even a true 16-bit executable for DOS.

elszgensa wrote on 2024-03-20, 07:59:

Dzzee uses mesa's OpenGL implementation for its DOS build - ask thp how it's done. It's still gonna be a bit of a resource hog compared to not using OpenGL in the first place... but at least it'll work at all.

Hello, zyzzle and elszgensa. Thank you for your replies.

I am now working on my next game which should have native DOS support. If I get the code going, I will then port the birds game to that as well (same engine).
elszgensa, your recommendation is interesting, but on DOS I would have no need for OGL. All the engine needs is access to a framebuffer.

You haven't told me! How far have you two gotten into the game? And what exactly did you like/dislike about it? 😁