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.
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 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.
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 :)
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 :)
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 ;)
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.
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
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]
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 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.
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.
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.
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.
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.
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.
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.
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.
123 comments
[ 3.3 ms ] story [ 164 ms ] threadOnce 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.
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 :)
https://store.steampowered.com/app/505460/Foxhole/
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.
Great mechanics Great soundtrack (if you like heavier music) Great varied modes of play
Are there any popular public servers that we can join?
https://store.steampowered.com/app/638490/Soldat/
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!"
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...
Glad to see that this great game has gone open-source.
That was back when the company currently known as CDPR only started work on the first game from The Witcher series.
https://www.webliero.com/