In the last 2 years I switched from dp to fte and I found an engine which it's not only a Quake engine, not anymore, it's a game engine on it's own. It's a real fun to create games with fteqw, as Shpuld demonstrate but, to me, there are several things I'd change now that FTEQW is at v4999.
- Delete all Quake related code(mdl,q1bsp,menu,game aspects, etc.). Yep, you Quake Folks, come on, hate me! No, seriously, it could be considered a plugin system to expand engine capabilities and think about a "Quake" plugin that includes all Quake stuff.
- Modular plugin system to show a very simple "core" and permits devs to create their particular plugin (see #1)
- Improving ssqc 2 csqc relationship (it's absurd that ssqc and csqc don't share world collision, models, nothing!). SSQC does only server stuff like score and enemies and CSQC handles EVERY client aspect. Engine should do the communication TRANSPARENTLY. No more sendevent, CSQC_Parse_Event, CSQC_Ent_Update and stuff. Just declare an entity is replicable. Like this
In csqc you should be able to handle speed, movement, custom physics, weapon mechanism, etc. and this code SHOULD be automatically sent to server
Code: Select all
void PlayerSpawn() { player = spawn(); setmodel(player,"player.iqm"); player.replicable = REPLICATE_CONTINUOUSLY;//this will trigger engine to make communicate ssqc and csqc continuosly to send every client every x seconds a replica of player .fields .............. } void BulletSpawn() { bullet = spawn; setmodel(bullet,"bullet.iqm"); bullet.replicable = REPLICATE_ONCE_PVS;//this happen only once and replicated only to PVS players }
- Improving CSQC. That means not asking yourself any 2 sec: "why the heck that other client is having my same weapon when I switch to next weapon? Why that player is aiming up when I move mouse up" and so on. CSQC should be the exact replica of client. Thats it. Whith a magic entity like "thisplayer" which is REALLY this player
- Improving csqc skeletal animations to make SIMPLY animation blending, animation looping, skeletal bone rotating, etc. Now it's a hard work, believe me
Code: Select all
if(player.velocity_x > 200){ player.upper.animation = AN_FIRE; player.lower.animation = AN_RUN; } else{ player.upper.animation = AN_FIRE; player.lower.animation = AN_IDLE; } also functions like Animation_PlayLoop(fistbone,lastbone,animname), Animation_PlayOnce(fistbone,lastbone,animname), Animation_Stop(fistbone,lastbone,animname) would be very cool
- Native Physics code (no more ODE, please). Probably GPL Doom3 Physics code could help, I dunno
Code: Select all
player.ragdoll = RAGDOLL_ACTIVE; self.ragdolltime = time + 2; player.ragdoll = RAGDOLL_INACTIVE; ..useless to say that ODE ragdolls are.. well let's just say are not usable! :)
- Librocket or similar implementation in engine (and builtins for quakec) for super simple UI creation (csqc UI are PAIN IN THE ***)
- Blender .blend file parser to avoid to use bsp for high detailed and organic levels (yeah, I know, no way it will happen! )
- Some sort of realtime GI rendering algorithm, like for example Voxel cone tracing algorithm
- GLSL is cool in fteqw but a better documentation will help. And quakec builtins would help too, for example, change on the fly a shader. Probably .forceshader does something similar?
- There are too many console commands. It'd be very cool if they were displayed in a menu, instead of alphabetically, in categories (INPUT, RENDERING, GAMEPLAY and so on)
Probably there are a little more but right now I can find any other! Well, sorry to have wasted forums space but it was something I wanted to write for a looong time!