Still intend to use FTE for Smash, so this is more of a wishlist / todo / something I'd like to see done / etc. I won't pretend this is something I currently have the knowledgebase to achieve at this time. Backwards compatibility with Quake / Quake 2 is to be tossed aside.
Everybody feel free to chime in / suggest stuff / point out stupid things.
Engine:
- Fix pre-existant bugs.
- Dump software renderer in favor of optimized OpenGL 1.2 and OpenGL 2.1 renderers. OpenGL 2.1 can do all the fancy eyecandy heavy lifting, while 1.2 is meant for older / more limited hardware.
- Add support for IQM, MD3.
- Improve sound system with engoo-style stuff
- Improve Multiplayer Networking. Based on how much better Q2 copes with my 500+ ping than regular NQ does, look into seeing if this can be improved further.
- Add skeletal / physics support for ragdolls
- Figure out some way of doing UT / Doom3 style ammo counters on parts of model skins. May require new model format or something.
Gamecode:
- Add tons of comments to enable use as a means of learning C. Have been reading C Primer Plus which is making me appreciate the differences and limitations of QuakeC more.
- Look into making it more secure against malware (i.e. somebody overwriting your exe, files, etc.) by doing some sort of Q3 VM or something...
Map Format:
- Increase allowed sizes of Q2BSP to something like BSP2. Should be a good match, since Q2BSP has those vis goodies for doors and stuff...
- Maybe figure out a way of going directly to .tga, and skipping .wal files. Could cause some problems with level editors though...
- Add Q3BSP / FBSP mirrors / portals stuff
More to come as I think of it...
Minimalist Gamedev idtech2 (Q2) based engine plan
-
- InsideQC Staff
- Posts: 1120
- Joined: Sat Oct 16, 2004 3:34 pm
-
- Posts: 2126
- Joined: Sat Nov 25, 2006 1:49 pm
Re: Minimalist Gamedev idtech2 based engine plan
If you're aiming for 5 to 10 year-old hardware I think it's safe by now to completely discard OpenGL 1.2 support. Please, let it go for once.Dr. Shadowborg wrote:Dump software renderer in favor of optimized OpenGL 1.2 and OpenGL 2.1 renderers. OpenGL 2.1 can do all the fancy eyecandy heavy lifting, while 1.2 is meant for older / more limited hardware.
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC (LordHavoc)
-
- InsideQC Staff
- Posts: 1120
- Joined: Sat Oct 16, 2004 3:34 pm
Re: Minimalist Gamedev idtech2 based engine plan
More like 15-year old hardware. Think Mobility M3's and Rage 128s. Also hardware you might find in moldy ooooold laptops.frag.machine wrote: If you're aiming for 5 to 10 year-old hardware I think it's safe by now to completely discard OpenGL 1.2 support. Please, let it go for once.
-
- Posts: 2126
- Joined: Sat Nov 25, 2006 1:49 pm
Re: Minimalist Gamedev idtech2 based engine plan
This project will be anything but "minimalist"...Dr. Shadowborg wrote:More like 15-year old hardware. Think Mobility M3's and Rage 128s. Also hardware you might find in moldy ooooold laptops.frag.machine wrote: If you're aiming for 5 to 10 year-old hardware I think it's safe by now to completely discard OpenGL 1.2 support. Please, let it go for once.
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC (LordHavoc)
-
- InsideQC Staff
- Posts: 1120
- Joined: Sat Oct 16, 2004 3:34 pm
Re: Minimalist Gamedev idtech2 based engine plan
Ergo why there are TWO renderers mentioned?frag.machine wrote: This project will be anything but "minimalist"...
Seriously. If I had mentioned there would be a software render instead of a OGL 1.2 render, you'd probably still be complaining. It's not even like I want it to do fancy stuff like bloom, spinning wheels, etc. I just want it to work at a basic, crude level. You know, like software was to the opengl render back in 1998-1999.
I see nothing else about the project particularly bothers you though. That's good.
Anyway, nothing is likely to happen on this front until I have enough art and sound assets together for Smash. No point messing around with this until you have some sort of game to build it around...
-
- Posts: 2126
- Joined: Sat Nov 25, 2006 1:49 pm
Re: Minimalist Gamedev idtech2 based engine plan
Sorry, didn't notice you mentioned two renderers. My bad.Dr. Shadowborg wrote:Ergo why there are TWO renderers mentioned?frag.machine wrote: This project will be anything but "minimalist"...
Sorry again, didn't want to annoy you. It's your project after all, please feel free to ignore my comments.Dr.Shadowborg wrote: Seriously. If I had mentioned there would be a software render instead of a OGL 1.2 render, you'd probably still be complaining. It's not even like I want it to do fancy stuff like bloom, spinning wheels, etc. I just want it to work at a basic, crude level. You know, like software was to the opengl render back in 1998-1999.
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC (LordHavoc)
-
- InsideQC Staff
- Posts: 1120
- Joined: Sat Oct 16, 2004 3:34 pm
Re: Minimalist Gamedev idtech2 (Q2) based engine plan
Sorry, its actually my bad for posting something silly like this.
The more I look at this, the more I realize that this wouldn't really be all that useful unless it was a package that came with at least a dedicated model editor and map editor. :-/
Oh well, it was just a crazy idea anyway...
The more I look at this, the more I realize that this wouldn't really be all that useful unless it was a package that came with at least a dedicated model editor and map editor. :-/
Oh well, it was just a crazy idea anyway...
Re: Minimalist Gamedev idtech2 (Q2) based engine plan
Why not build on top of something much more versatile such as the Tesseract engine? It's rock-solid, has a much more permissive license than id tech's, very very easy to add new gameplay logic (since it has just the barebones) and the code is very well written.
Re: Minimalist Gamedev idtech2 (Q2) based engine plan
Different people have different definitions of "minimalist" and some say "minimalist" when what they really mean is actually something else.
The comment upthread about supporting both GL 1.2 and GL 2.1 being anything but minimalist is too true: at the most basic level, for everything you do you will have to do it twice.
The main point to note is about supporting older hardware. I see this desire expressed elsewhere by people wishing to keep the GL version low, and it's necessary to ask: do these target systems actually exist or is this just a theoretical goal? Because if you're coding to a hypothetical target system that doesn't actually exist, you're wasting your time and only fooling yourself.
It's a fallacy to think of shaders as only being for "fancy stuff like bloom, spinning wheels, etc". With shaders you can do things like corrected water warps, hardware-accelerated frame interpolation, etc, without even moving beyond the original engine's look and feel. And all of this can be done with less code, and simpler code, than brute-forcing it in software. A more specific example: have a look at FitzQuake's sky code. All of that can be done in about 50 lines of C code, with significantly higher quality and performance, by moving to shaders. I know which approach I consider to be simpler and more minimalist.
I've a Quake 2 engine that's D3D9, Shader Model 3 only, and with no fallback paths for older hardware, which I consider minimalist. There's a single code path to maintain and debug, performance and appearance is consistent across a wide range of hardware from multiple vendors, the code is clean and simple and all the vendor-specific special-casing in the original is totally ripped out. None of that would have been achievable if I hadn't picked a good, sensible baseline and decided that I had no interest in supporting anything below it.
The comment upthread about supporting both GL 1.2 and GL 2.1 being anything but minimalist is too true: at the most basic level, for everything you do you will have to do it twice.
The main point to note is about supporting older hardware. I see this desire expressed elsewhere by people wishing to keep the GL version low, and it's necessary to ask: do these target systems actually exist or is this just a theoretical goal? Because if you're coding to a hypothetical target system that doesn't actually exist, you're wasting your time and only fooling yourself.
It's a fallacy to think of shaders as only being for "fancy stuff like bloom, spinning wheels, etc". With shaders you can do things like corrected water warps, hardware-accelerated frame interpolation, etc, without even moving beyond the original engine's look and feel. And all of this can be done with less code, and simpler code, than brute-forcing it in software. A more specific example: have a look at FitzQuake's sky code. All of that can be done in about 50 lines of C code, with significantly higher quality and performance, by moving to shaders. I know which approach I consider to be simpler and more minimalist.
I've a Quake 2 engine that's D3D9, Shader Model 3 only, and with no fallback paths for older hardware, which I consider minimalist. There's a single code path to maintain and debug, performance and appearance is consistent across a wide range of hardware from multiple vendors, the code is clean and simple and all the vendor-specific special-casing in the original is totally ripped out. None of that would have been achievable if I hadn't picked a good, sensible baseline and decided that I had no interest in supporting anything below it.
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
We knew the words, we knew the score, we knew what we were fighting for
-
- InsideQC Staff
- Posts: 1120
- Joined: Sat Oct 16, 2004 3:34 pm
Re: Minimalist Gamedev idtech2 (Q2) based engine plan
Not a bad idea to look into at some point in the future, that said, 250+mb / 587mb (sauerbraten) is quite a download....JasonX wrote:Why not build on top of something much more versatile such as the Tesseract engine? It's rock-solid, has a much more permissive license than id tech's, very very easy to add new gameplay logic (since it has just the barebones) and the code is very well written.