Soldat: a 2D (side-view) multiplayer action game
github.com
github.com
Once we added mouse aim support to OpenLieroX as well, but the Liero community didn't liked it, and basically it became another game. Network play between both versions would be unfair. It would really need a different name.
Teeworlds (https://www.teeworlds.com/) is also a more recent very similar game, also with mouse aim, and ninja rope.
Interesting also that Soldat is implemented in Free Pascal / Lazarus.
(Rereading the above I sound super critical. That was not my intention!)
When I started working on it, I was in school, and then started studying at a university, and continued working on it during most of my studies (and I think my studies somewhat suffered from it, as I spent way more time on coding on OLX than on studying...). But then I started a PhD, got full-time job, now got kids, etc...
Also, this is kind of an infinite project. You can always improve things, implement nice new ideas, etc.
For reference, repo is here: https://github.com/albertz/openlierox
The code you find there is already more modern than all the published builds. It is based on SDL2 now, and has lots of cleanups. The merge of the Gusanos engine and OLX engine is much more completed and cleaned up. Although this could still further improved. I would like to use Lua as the pure scripting engine (from Gusanos engine), and port over all the OLX game logic to that as well, so that the core engine becomes much simpler.
The graphics effects and drawing should be optimized further. On the transition to SDL2 and due to code cleanup, graphics has become slower. And it was already somewhat slow before. This is maybe not much a problem on a modern machine, but this game really should not require a modern machine to run nicely. One reason is that this is all purely software pixel based, including all graphics effects. We definitely should move to OpenGL, Vulkan or so, but some of the graphics effects are a bit tricky to re-implement, and probably need some shader logic. But we also want to have it cross platform, really running anywhere.
I think you refer to HawkNL, which is used for the low level networking (UDP/TCP sockets, DNS)? Yea, we definitely could replace that. Although we anyway provide our own fork within OLX, and it's not so special. One of the many things you probably could replace by sth more modern.
The (higher level) network engine is probably a more important item which needs a reimplementation to support more players, be more stable, etc.
OpenLiero (https://www.liero.be/) is a reimplementation as well. We planned to provide this (the game physics / logic / weapons) as another mod inside OLX. It already has some mods which are similar, but not exactly the same.
And many more things...
BTW, I found the screenshots at soldat.pl, but it would be nice to include a couple in the GitHub readme too.
Will do.
I also recall playing Soldat a lot back in high school. I think there wasn't a Linux version available, which I guess is why I stopped. Perhaps one will appear now that it is open source?
I just came in comments to see is there a Linux build.
Now I know.
I maintained Soldat back from version 1.5+ to 1.7 before someone else took over for a few years.
The current version on Steam is Soldat 1.7 while the open source version is an unfinished Soldat 1.8 and needs some love before it can be released (gui is missing, new netcode, switch to lazarus/fpc, macOS and GNU/Linux support, new config file format to name a few.)
So don't expect everything to work out of the box if you compile it.
Any help is welcome btw ;)
One time about 80% of my class in school ("Informatik-Berufsschule" in Switzerland) was playing that game while the teacher was talking about some boring Active Directory design topics. Suddenly one of the students screamed "HEADSHOT!", followed by an annoyed teacher and everyone quickly minimizing the game window :)
You're not the original developer? Does he get any money from the Steam sale? The situation is rather weird and different people seem to know different things.
Could you shed some light on the situation?
He's hosting the lobby server, website and forum for the game.
Afaik the contributors didn't get any money and worked on the game in their spare time because they love Soldat.
One of the goals was to release it as FLOSS.
Something like 10 years ago I had a similar idea - a 2D shooter with the feel and gameplay of a FPS, only that in my case I thought of making it top-down, and the plan was that visibility would be a huge thing - your 2D character would only see things from their point of view that weren't blocked by the level geometry or other players.
I never completed that game, for various reasons. But in the course of making that prototype, I did a lot of research about the networking model. I read every article I could find about client-side prediction, server reconciliation, and entity interpolation. I didn't want all this effort to go to waste, so I wrote what I had learned in article form, and put it on my website.
That's the never-told-before origin story of my multiplayer networking articles :)
https://gabrielgambetta.com/client-server-game-architecture....
I also wanted to do a realistic top down 2d shooter. My gimmick was to have akimbo guns and mouse look - view always centered, horizontal mouse move rotates the view, vertical changes the angle between player's hands. You would be able to run forward and shoot on both sides.
OTOH if you can start playing just with the horizontal axis and WASD, and only user the vertical axis as an expert feature... I can see it becoming super compelling. The "easy to learn, hard to master" kind of thing.
My initial tests with just the mouse look were promising. I did a lousy game for a small competition that used this part of the idea and it was fun for me, but you could barely call it a game.
With the akimbo play I hoped that the cool factor would win people if it would not be too easy to grasp.
Maybe some time in the future I will return to the idea, because I still have a small candle for gamedev. If anyone wants to experiment with the idea be my guest, I don't mind. Just let me know, because I would love to try it out myself ;)
Thanks again for these truly useful articles !
If your world is going to be tile-based, doing shadow-like visibility should be simpler than if you did arbitrary meshes :)
EDIT: Also, yes. If you have any interest in networked 2D games and haven't tried Soldat, I highly recommend it.
...I _think_ I have it on a shovelware CD somewhere...
So basically you've lit a spark under me now. Thanks! And I'm now realizing oddly this is the 2nd thing I have of yours on my to-read list, I just saw the post here about computer graphics from scratch a few days ago. I (and I'm sure many others) appreciate your willingness to knowledge-share.
There is a reverse engineered version that is still running here: http://freeinfantry.com/
Visibility with partial cover/between different heights would look interesting in a Flatland sort of way, with the body shape morphing based on angle. And I think a 3D level is pretty readable from above if height is shown as a color gradient.
The weapons are balanced and controls are tight. This might be the nostalgia, but it felt as polished as Starcraft, in its own way.
Capture The Flag (with ~5 people per team) is still my favorite game mode. Great game!
It's written in Pascal!? Man I can't wait to poke around this codebase.
EDIT: Looks like it went open source May 2020: https://store.steampowered.com/news/app/638490/view/21926360...
Such a pleasant surprise to see it open sourced.
Great mechanics Great soundtrack (if you like heavier music) Great varied modes of play
Soldat is to Quake as Terraria is to Minecraft.
Awesome to see it open sourced!
Side note: Soldat means "soldier" in several Slavic languages
I played this so much back in the days that it is the only game I can say I played it on a somewhat competitive level. A friend and I dominated the 2v2 games only some Scandinavian guys were better then us ... good times :-)
https://github.com/Soldat/soldat/blob/develop/server/ServerC...
The last time I used Pascal was in the late 1980s on a VAX/VMS system. Very fond memories!
\smoke
Might need to rewrite it or use one of the other community made map editors in the future, especially when people on other Platforms want to start mapping.
I think it's great that they opensourced it, although it somewhat faded not by the lack of development but by a slow and steady reduction in players (at least, as far as I remember, in realistic mode).
It's an amazing game. Ruger was overpowered though.
Are there any popular public servers that we can join?
One other I would love to see resurrected is Babo Violent 2.
We used to play this a lot among friends a few years ago in college.
That was back when the company currently known as CDPR only started work on the first game from The Witcher series.
I enjoy a lot.
Glad to see that this great game has gone open-source.
So not the most creative name, but it didn't matter since this game is awesome.
Based on https://en.wiktionary.org/wiki/soldat it seems to originally come from Italian?
Q: What does "Soldat" mean!?
A: "Soldat" or "Soldaat" means "soldier" in the following languages: german, dutch, norwegian, swedish, danish, french, slovenian, afrikaans, russian, catalan and romanian.
> Eeee, no?
As Dynamix would say, "Join us!"