Shmup 99
A downloadable game for Windows and Linux
Linux users: Please look at the installation instructions. The game includes a shared library which is in turn dynamically linked against several other libraries that I have not included. If you are missing libraries, the plugin will fail to load but the game will still start and show broken functionality.
A battle royale shoot 'em up inspired mainly by Touhou 9 and Tetris 99.
Your goal is to send bullets and bullet patterns to the other players' screens while dodging those sent at you. Each player has three lives and the last one surviving is the winner. Do you have what it takes to earn your Epic Victory Royale?
Controls: Refer to in-game instructions
Mechanics
- Enemies: Computer controlled enemies will move around the screen. Shoot them to destroy them and send bullets to your target. They will also produce a shockwave that sends nearby bullets.
- Cards: Doing things fills up your meter, which causes you to draw a card when full. Cards may have various effects and may be used with the bomb input (X). (A deck and discard pile exists but there is no visual indication other than drawing cards)
- Power level: Indicated by the number to the left of the meter bar, it increases every time you use certain cards. Most card effects are strengthened by your power level.
Status | Prototype |
Platforms | Windows, Linux |
Author | 2hu4u |
Genre | Action, Card Game |
Tags | battle-royale, Multiplayer, Shoot 'Em Up |
Download
Install instructions
All versions are a zip file that can be extracted, and each contains an executable file that can be run to start the game.
The Linux version of the game links dynamically against many libraries. Before playing, run ldd on libgdexample.so and check that all libraries are resolved. The most common missing library is mbedtls and related libraries, which you can probably install from your package manager.
The server takes three command line arguments. The first is the address and port you wish to host at (e.g. "192.168.0.1:1337"), and the second is the minimum number of seconds to wait before starting a game. The third is an optional passphrase that will allow users who know the passphrase to issue server commands. The address and port must match the values clients will enter to join, so if you want people to be able to join over the internet, you must use a WAN address.
Comments
Log in with itch.io to leave a comment.
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 =)
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 =)