Comments

Log in with itch.io to leave a comment.

(2 edits)

Hi, I played this recently with 3 friends; we did figure out how to do the command line for the server (i.e. you type "C:\gamelocation\server.exe 123.123.123.123:N", where the numbers are your ip-adress and N = your port number), but how do you set the wait time or passphrase?

Sorry for the late response - they are additional arguments after the IP:P, like "server.exe 123.123.123.123:N 42 abcde"

Nice work doing this! =) Just as a fellow shmup fan and developer I wonder, what technology have you used for the online part? keep up the great work =)

(3 edits)

Thanks. For networking I'm using a library called yojimbo (https://github.com/networkprotocol/yojimbo) which has a similar use case to ENet but also provides authentication. My netcode logic is a shared deterministic simulation, mainly input-delay based but with a rollback-like hack so that there's no delay for the local player's screen. However I avoid applying rollback across the whole game state (so I don't have to save/restore it every frame). Because the interactions between players are very delayed, and I avoid input delay for the local player, the game can tolerate large network latency.

I see, thanks a lot for the explanation, I think you did quite a nice work as the player will never experiment a big delay while keeping the game fair enough for everyone and without making it slow or anything, in this type of games speed is needed so your approach seems like the best. I was looking at firebase for multiplayer, but really havent digged much in that, they say it works fine and can be used for free for small projects, plus it will work alone or with a server one make, havent you considered using it? My experience with multiplayer is really low so maybe my question is totally senseless, sorry if so

There's two kinds of networking I will eventually need:

The first is the communication between the players' game clients and the game server(s) actually running the game simulation. Firebase does not provide anything particularly useful for realtime messaging, which is needed in Shmup 99 because the players have continuous interaction with each other. Firebase might be suitable for games that don't require realtime communication, but I don't know for sure and can't give any Firebase advice, as I haven't used it. For game communication I currently use yojimbo, which I linked earlier. I'm satisfied with how that is set up.

The other kind of networking I will need is between game servers or players and centralized servers for authentication, stats tracking, etc.. Firebase might be more useful here than game communication, but I won't use it because it's proprietary. I have not started working on this portion of the game, but the central servers will probably expose a web API and use some SQL-based database system. There are lots of existing libraries/frameworks for that kind of thing and I have not made any concrete choice on what I will use. Firebase provides a database system and push notifications, which may be useful if you decide to use Firebase for your persistence stuff.

Thanks a lot for the explanation, I think I was wrong about firebase and how it could work in a game like this, I will check Yojimbo as it seems more appropiate for real time communication between players and servers. As said I have very little experience in multiplayer field and probably the most I have done before was done the wrong way haha, will dig deeper into this soon, thanks a lot for all the deatailed information and explanation =)