Seems it is/would be kinda hard to help with development, got some duties so i didn't even post too for couple days. And theres quite some pile of code to understand to be able to do something
Where could i start? Or maybe i'll just stick with finding/reporting bugs and oddities. Don't know
You do not need to look deeply into the code to start, there's pretty clean class hierarchy - there's one global GameServer and one global CClient, if you're playing locally or hosting one is connected to another, if you're joining game only CClient is used. There are CWorm class, CMap class and CGameScript class - their usage should be obvious.
The ugliest thing in my opinion is GUI system. We already have one deprecated GUI system and two unfinished new GUI systems - the first one by me is binded to deprecated GUI and reuses existing widgets, second one by DC resides in SkinnedGui folder and has it's own skinnable widget set.
Good place to start will be adding another option to the game - you should have pretty big list of them, like "Do not allow worm to rope to the level ceiling, only to dirt/stone", or maybe "Weapons reloading always, 2x faster when you emptied ammo", or some general stuff like auto-updating server list and making beep when some server from your Favorites list appears or becomes Open, or make that "Damage done by player" thing - Beta9 clients should report who did damage to their worms and how much to the server, and server will send extended score info to Beta9 clients, and maybe calculate locally damage for non-Beta9 clients, which may be more or less wrong of course.
More complicated task is to increase FPS - you're making profiling build, and run OLX with profiler (there are lots of them for Linux, though I've had somekind success only with GProf), then you're looking what function takes most time to execute (currently it's font drawing) and optimize it. DC is currently doing that.
Another nice place to start will be new physics engine, ideally the same as in original Liero
game, plus nasty things removed such as wallshooting or sliding on the ramp-like ceiling. You should copy existing PhysicsEngine class and edit it as you like - we have everything ready for it.
You can also extend dedicated server - there are lot of things to do there, like remove buggy CTF code from C++ and add it to Python scripts. You can reuse existing system which runs Python as separate process, but ideally we should link or dynamically load Python into OLX, then we can have nice scripting available to users from GUI. But that's not easy task.
Please do NOT try to implement new modding engine based on LUA or some else scripting language around. We already got two devs who tried that, failed and lost interest to OLX. You should be ready to spend no less than 3 months on it of you want to implement this. The easier and uglier way would be to extend existing engine with Guided Missile and Fan, then you should make another Mod Compiler (copypaste some OLX code typically). The nice way to do that would be to make another CGameScript class and make some virtual CGameScriptBase class, and derive both old and new ones from it.
Speaking about oddities. One day when playing on net one player showed me some weird stuff that i think definitely shouldn't be happening: When playing online (you must Not be host), then when you get eliminated (out), but some other players are left playing in talk prompt you can write "/spectate" and you just "resurrect" with 0 lives, but resurrect nonetheless, being able to kill an be killed. Don't know if this is reported he said he didn't report it so i thought i would do.
Griffin fixed that recently.
In other thread i asked if server runs full simulation, and you answered that it doesn't. And this seems not too good idea for me. (of course i might be wrong) Also you said that server can run full simulation if server side health is enabled, but iirc its not popular because gives lag-advantage for host or thats how i understood. But then i was thinking about this kind of architecture i it seems for me that if not running full scale simulation the server uses more bandwidth - server gets data from everyone and then resends everyones data to everyone (thats how i understand, please correct me if needed). But if server ran full simulation then it would just need to get directions/actions/key presses from clients and then send data, and i think that this would cut servers download bandwidth. One other advantage that full simulation would give, that if done well/correctly the game would become deterministic and identical for all clients. The thing that it would be deterministic would make "game recording" feature trivial to implement. You should just store random number generator seed, and players key preses. Besides this would prevent cheating (although this problem seems marginal, since i haven't encountered any cheaters so far, as much as i know ). I know that i could give slight advantage to the host, but seems many games do this, and its not very problematic. Also if server ran as dedicated and everyone had to connect no one would get advantage.
The worm's own health is stored on client, you can cheat just by using some memory editor. Enabling SSH will just send WormDied packet when worm's health on server reaches zero, which may be totally not true for client.
All clients send to server updates with their coordinates and whether fire button pressed, the server sends to clients coordinates of other clients and list of projectiles that worms shooted - with 0LT it can grow huge. This list has some kinda random number attached, so all secondary projectiles created when primary one explodes should fly in the same pattern on all clients - they simulated on clients only, not sent over net. But the list does not contain timing info, so primary projectile explodes when game situation changed on different clients, and may not explode at all for some clients if they avoided it locally. Plus there is such nice thing in OLX as dirt - it is always different for all clients, the best situation is for connect-during-game feature - if you connect to Dirt map other worms may have all dirt destroyed but you will see it full of dirt, and others "slicing" through dirt as somekind of ghosts.
The "New net engine" I want to implement is exactly what you've said - I've implemented that in Orthodox mod (but screwed up somewhere and it's synced only for first game, then you have to restart OLX) - it is actually OpenLiero
linked to OLX code and using it's net engine through my own mega-synced-net-wrapper, which sends only user keypresses over net. Maybe I'll finish it someday, if you wish to work on that feature check out revision 2273 - it's removed from later revisions. The only modification to do there is individual random number for each player (so whole game won't lag if some of players lags), and maybe delay in calculating gamestate for drawing, so other worms won't "teleport" randomly. Oh, it also copies whole CMap and CProjectile array when new packet arrives to re-calculate game state with new data - it is unnoticeable for OpenLiero, but may have heavy FPS drop on 0lt spammods. I've made functions for CMap that will remember only changed parts and revert them quickly, and I have some ideas how to optimize CProjectile array, but first I should implement net engine correcly working, even slow as hell, and did not even started yet.