Fish Game is an open game development project, sponsored by Heroic Labs.
We are making this game because:
Nakama users need better from-scratch examples of how to build multiplayer games with Nakama in the stack.
Nakama developers need dogfooding projects that are easy to sustain long-term.
Indie game developers need more in-depth tutorials and reference implementations of networked multiplayer games.
The open game development ecosystem needs standardized language & models for talking about network design.
In web development there’s a hugely popular ‘glue layer’ project called RealWorld.
While most “todo” demos provide an excellent cursory glance at a framework’s capabilities, they typically don’t convey the knowledge & perspective required to actually build real applications with it.
RealWorld solves this by allowing you to choose any frontend (React, Angular 2, & more) and any backend (Node, Django, & more) and see how they power a real world, beautifully designed fullstack app called “Conduit”.
So this is effectively what we’re setting out to do, in our own small way. Certainly we’re gonna have to go about it a bit differently because web app architecture doesn’t map 1:1 to games, but the fundamental concepts are largely the same. Games, just like web apps, can draw a pretty clear line between backend and frontend.
Our minimal approach here is to start by making the same game in two different toolsets. There won’t be a strict API spec to follow yet; the two implementations will merely follow an identical Fish Game - Game Design Document.
For our two initial game examples, one will be made in the Godot Engine and the other in Rust-lang with macroquad. Both will use Nakama for their social multiplayer infrastructure ( i.e. authentication, matchmaking & leaderboards) as well as real-time multiplayer.
Godot is the most popular game engine among indie and open source game developers. It’s also very high level (if desired), letting users make games with its own GDscript.
Rust for gamedev on the other hand is a fast-growing new trend. It’s pretty much as low-level as any gamedev gets (without the foot-guns ). The language has an official Working Group dedicated to gamedev.
Both games will be full-stack implementations of loosely coupled back- and front-ends for the Fish Game concept.
While it is entirely feasible to make a game with a Rust backend and Godot frontend, we won’t be attempting that for now. Check out godot-rust for excellent guidance and examples on that front.
What we are making is an open remake of the excellent Duck Game.
Blast your friends with Shotguns, Net Guns, Mind Control Rays, Saxophones, Magnet Guns, and much, much more. This is
DUCKFISH GAME. Don’t blink.
- 2 to 4 players in either Local Multiplayer or Online Play
- Easy to pick up, emphasizing strategy over twitch reaction
- Customize characters with hats, saved to your cross-platform profile (later)
- Create & explore user-made levels (later)
Duck Game is an excellent game. It deserves the 10/10 rating it can boast on Steam. But it is also a bit stuck in an older tech stack. A combination of tech debt and lacking cross-platform infrastructure makes it very PC-centric. It’s been ported to other platforms, albeit with a more limited experience (e.g. no online map sharing on consoles).
It is also a perfectly moddable game, enabling players to make and share custom maps, weapons and, most importantly, hats! This level of moddability lends itself exceptionally well to open source practices. Hence our belief that we can level up what Duck Game currently is.
There’s ample opportunity for collaboration here: Fish Game should not be perceived as a threat, but rather as a tribute to Duck Game. We are not looking to co-opt the game; we wanna help make it better.
The games are currently at varying stages of development. None of them have yet incorporated our awesome art pack by Pixel Frog. We’ll post more updates as we near completion in the coming weeks.
Please feel free to reply here with any first impressions or questions you may have.