I was surprised and happy to see this also being open sourced. As a developer of OpenLieroX (http://www.openlierox.net/), we also took inspiration of Soldat. The main difference is mainly the way you control the game, i.e. with mouse aim cursor in Soldat, and purely with keyboard in Liero. And also the ninja rope.
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.
We have replaced our daily table soccer break with a round of teeworlds at work. It's a great game for that purpose. Like table soccer, the game mechanics are simple enough that anyone can join and have fun instantly, but there is a lot of opportunity to gain skills by learning to use the rope efficiently, combined with "classic" FPS stunts such as rocket jumps. Highly recommended.
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?
Forgot to say: I have also played Liero a lot with shared keyboard, and didn't know about OpenLieroX! I'll definitely try that out, as it sounds like it's right up my alley :)
I haven't used Pascal for around 15 years, when I used to build Windows desktop apps using Delphi - nice to see some Pascal code for the first time in a while!
BTW, I found the screenshots at soldat.pl, but it would be nice to include a couple in the GitHub readme too.
Ooh! What happened to OpenLieroX? I used to love it, but I see there hasn't been a release in ages. Is development still ongoing? Is it still tied to that quirky abandoned networking library that I can't remember the name of? How did it stand up to the original Liero being opened up?
(Rereading the above I sound super critical. That was not my intention!)
I really would love to continue working on OpenLieroX (OLX), but my priorities have shifted, and I just don't find the time anymore, although I still really would like to. I guess it's the same for the other developers. We used to be three main developers.
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.
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.
No, not at all. I'm just feeling a bit sad about it myself. But I'm also doing very interesting things recently (research on deep learning), so it's okay.
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.
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.
Thanks for your work on Soldat. I still remember a bunch of us sitting in our living room, all with our desktop PCs, and the floor being a mess of cables connecting to power banks and an old switch, playing Soldat for hours.
Thanks for maintaining it! I have fond memories of that game.
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 :)
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 :)
The game is nearly twenty years old. It's really a pity that you didn't play it at its peak. Do you know "Running with Rifles"? I think line of sight is not a thing there, but it still reminds me of your idea.
Oh wow, this is perfect timing. I do hacking on homemade from-scratch 2d game engines in C++ just for fun (and because it's about as far away from what I do at work as I can get). My projects never get super polished because they're more about learning experiences for me than making anything for sale/consumption. Anyways, my most recent project was a traditional roguelike (holy shit, GUI programming with only SDL for comfort is a challenge), so for my next one I'm wanting to do a top-down action game just for something different. I had decided that I thought making it online multiplayer would be a good focus for a challenge learning objective, but I've been a little hesitant because networking at that level is far outside my comfort zone, and it doesn't seem like something I could just hack my way through like I could for simple sprite rendering/movement physics/etc.
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.
I've been trying to build that very game as a .io game using Phaser3, MatterJS and WebSockets. Thanks a lot for these ! Your articles are one of the most important ressource i've been refering to in order to build it. I'm still struggling with entity interpolation and reconcialiation, but i'm hanging in there and i hope to finish building a complete game loop sometime this year. There are still a lot of issues to fix before reaching that point, but I like what i've built so far: https://mtvs.chaz.pro
Soldat had a realistic game mode were it was like that. It also included ghosts of players if you would hear steps or them shooting.
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.
That's a very original idea! My first though is that it's a pretty unintuitive control scheme, how long did it take you to master it? Did other people "get it"? I can imagine that kind of thing being a barrier for adoption :(
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.
I never went far with it. When I was more into gamedev I was one of those wasting time on trying to write a generic engine instead of just writing the damn game.
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 ;)
Man. I always just assumed you were a grizzled netcode veteran that decided one day to share your hard-won-in-the-trenches knowledge with the rest of us plebs. Those articles are fantastic.
EDIT: Also, yes. If you have any interest in networked 2D games and haven't tried Soldat, I highly recommend it.
Sorry to disappoint! I'm not a grizzled netcode veteran. I guess my strength is explaining complex topics in an accessible way - that's the main contribution of these articles, and the same can be said about my Computer Graphics book. [IMPOSTOR SYNDROME INTENSIFIES]
I played around with the same idea last year! A top-down shooter with line of sight and peeking, inspired by CS. Didn't get very far with it myself, but the idea has tons of potential.
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.
For those who are too lazy to compile the game to see what it looks like, here is the official page of Soldat: https://soldat.pl/en/ It has screenshots.
That's a blast from the bast. I played a lot of Soldat in high school in Poland like 15 years ago. We was virtually never doing any actual learning we just played MoH:AA, Unreal Tournament and Soldat for hours.
This is a great game. Used to play it quite a lot. Playing a lan game with 2 friends was incredibly fun. I'm too old and blind to play a game that needs this level of reaction now, but if you can actually play a modern FPS and if people are still playing this, it's quite unique.
Yeah we’d use it as our LAN opener so as people arrived they could just jump in. For me this game is tied to those memories of hefting your 19” CRT on the corner of a ping pong table and trying to get set up ASAP so you wouldn’t miss another round.
The weapons are balanced and controls are tight. This might be the nostalgia, but it felt as polished as Starcraft, in its own way.
I attended a presentation by the creator of this game, it was around 2010. The most fun part was the business model. I don't remember the exact numbers, but he made a lot of money on a free to play game before "free to play" model got really popular. One notable thing I remember is that the paid version had higher resolution options and it was one of the highly sought after features.
I used to play this lunchtime at my old job, there was about a dozen of us that used to play. I wrote a log parser (in PERL!) that would generate stats of who was killing who the most, and who had the most kills with a particular weapon to display leaderboards. I'd run after a session and people would check out their stats.
Strange how I have been thinking about the soldat game a few times the last 2 months. Then a link on hacker news... the universe works in mysterious ways.
Oh wow, I love Soldat! I used to play it a lot in the mid 2000s and even bought a license to get rid of the nagware and support the developer. Been dreaming of having access to the code for some 17 years now, this is great news!
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 :-)
It's finally open source! Wow, I hosted a server back in 2006 and used to play this game all the time back then. The European players would annihilate me until I learned how to prone-fly with the sniper rifle. I still have a collection of maps I made back then that I included on the server. For anyone that remembers...
The map editor (called Soldat PolyWorks) is also FLOSS.
It is written in Visual Basic 6 and uses DirectX 8 though.
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 played hundreds of hours of Soldat back in my school days. Almost exclusively in realistic mode. There was a great community, I think realsold.org, truly a flashback to think about it now.
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.
Something my brother and I enjoyed was to switch to the ballistic mortar / grenade launcher instagib weapon and then play. You could instagib but the weapon had a massive gravity effect so it was hard to aim. Deliciously fun in the air.
Also played Soldat years ago - another classic indy from the Soldat period was Tetrinet. For a modern casual side-scroller that's cooperative and kid-friendly rather than pure violence, try Spelunky 2.
Ah good memories ... The 8 was much fun, perhaps broken. I developed an uncanny precision with it. But also 6 was great, with more ammo, but still great precision. And the jetpack tricks ...
I played the hell out of this back in the day. Was this open sourced recently, or has it been open for a while and I just never noticed? It's been at least a decade since I last played.
Is there a list of games like this?
I remember playing a free side scroller sci-fi FPS game on windows ~12 years ago. That I liked a lot but never found again.
Glad to see this published.
I really miss the follow-up Link Dead. I played the alpha releases and thought it had lots of potential as a deliberate 2D tactical shooter.
Used to play this game all the time back in the late 2000's. Honestly thought it died out long ago. Really glad to see it still alive with an active community.
No. The Polish word for soldier is żołnierz. There is a Polish word "sołdat", which is a borrowing of the Russian солдат, and it's mostly used to describe Russian/Soviet soldiers and comes with a negative connotations.
A: "Soldat" or "Soldaat" means "soldier" in the following languages: german, dutch, norwegian, swedish, danish, french, slovenian, afrikaans, russian, catalan and romanian.
I guess I shouldn't be surprised so many Soldat players also played Tribes. We love jetpacks. And yeah, the community that is left in T1 is hardcore, but if you join the US (any time) or EU (21:00GMT, 3pm CST) LT servers on the weekends there's occasionally less hardcore pick-up games.
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.