123 comments

[ 3.3 ms ] story [ 164 ms ] thread
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.

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...

Thanks for the writeup! I really hope you didn't take my comment as criticism. I can definitely understand!
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.
Soldat 2 is available in early-access, which might have provided the motivation to open-source the original.
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.

Yeah good point, probably better to include the screenshot than an icon.

Will do.

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 :)
It actually ran quite well in Wine even back than.
> I think there wasn't a Linux version available, which I guess is why I stopped.

I just came in comments to see is there a Linux build.

Now I know.

Looks super fun, I'll give it a try!

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....

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

Thanks again for these truly useful articles !

Looks very promising, well done!

If your world is going to be tile-based, doing shadow-like visibility should be simpler than if you did arbitrary meshes :)

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]
https://closequarters.io/ This is similar to what you are describing, although development has sadly appeared to have stopped.
Wow, that does look super close to what I had in mind! Add the shadow-like line-of-sight visibility thing, and it's almost the exact same 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.

It's a fun rabbit hole, and Gabriel's articles are some of the best.
There's two things I wrote on your to-read list? I'm flattered :D
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.

I learned alot about computers trying to set up LAN games on the school network with this game.
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.

Wow, I remember playing this game back in 2006. It's in the same vein as Liero
Used to play this with my cousins 10 years ago... what great game
I used to play this with my class mates 20 years ago... :D
About 15 for me :)

Great mechanics Great soundtrack (if you like heavier music) Great varied modes of play

FYI: Soldat means "soldier" in Russian.

So not the most creative name, but it didn't matter since this game is awesome.

The creator is Polish, and it means soldier in Polish too.
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.
The developer hosts the game on a Polish domain (https://soldat.pl/), and even has a FAQ entry regarding the name: https://soldat.pl/en/page/faq

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.

> 11. Can you give me the source code of Soldat?

> Eeee, no?

Even funnier, "no" in polish is "yep".
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.
Soldat and UT for me as well :) And Trackmania. And of course some browser games like MotherLoad.
Good old days, oh we are soo old now :(
Is this similar to Abuse?
The control scheme is similar, but this is player vs player only.
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.
(comment deleted)
Well, shazbot!
I miss tribes 1. There's still servers, but the only folk still playing are too hardcore.
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.

As Dynamix would say, "Join us!"

Soldat's gameplay (particularly its jetpack momentum) brought many hours of fun to my childhood.

Capture The Flag (with ~5 people per team) is still my favorite game mode. Great game!

Pointing the minigun down and hovering for a few seconds was my personal favorite.
Something around 15 years ago, we've been playing a lot with some friends. Simple, much more dynamic than Worms...

Glad to see that this great game has gone open-source.

This is the type of game I'd like to see a console port of.
This is one of my all-time favorite games! I put hundreds of hours in back in high school. Haven't seen it in ages. Thanks for sharing!
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.
Soldat 2 is in early access on steam - for those who might be interested.
I remember paying a grand total of 18,75PLN for a copy in 2004 - I think me and my friends got a group discount for buying five keys.

That was back when the company currently known as CDPR only started work on the first game from The Witcher series.

I used to play soldat back in 2003. That is 18 years ago.
Oh man, I played this a ton back maybe 15 years ago. I haven't played it in forever and a half, but it's a really solid game and a lot of fun!
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.
Last time I learned about this game I think was when someone shared WebLiero. Which was a pretty fun distraction for me and my son for a few hours :)

https://www.webliero.com/

For some reason this reminded me of Cannon Fodder from the early 90s.