Announcing: Trap Labs
Trap Labs is a single button multiplayer top down platformer that allows you to race, co-op, puzzle with friends online while dodging traps!
Download the work in progress build:
- Extract all files to a directory. Run TrapLabs.exe / TrapLabs.app to play.
- Click on the spot you want to move to, escape key to exit level. Dodge traps to advance further into the level. That’s it!
This demo is work in progress. Multiplayer is not yet available for testing.
Note: For Windows you'll need Visual C++ redistributables from 2010-2015. Most people should have these installed if you are running the latest Windows. If not then you need to install them yourself: VC++ 2010 -- VC++ 2012 -- VC++ 2013 -- VC++ 2015
About the Demo
This is a work-in-progress demoing the some of the levels of the single player campaign. For the official release I intend to have online multiplayer and a map maker. There are 3 levels included in the demo. They feature a variety play styles. Difficulty scaling is a bit off as they get fairly difficult near the last few obstacles of level 1, but it should give you a good idea of how easy and difficult it can be. All levels in the demo are beatable. So if you get stuck just keep trying. If you played bounds during Starcraft 1 days, then this should be fairly easy for you.
Why is doesn’t multiplayer button work???
Multiplayer will be enabled in a future release.
Game is complaining that I’m missing msvcXXX.dll wtf??
This means you need to install the Visual C++ redistributables (see the how to play section, also implies you should update your Windows)
What platforms will this be on?
First on Windows, but eventually for Mac OS X/Linux, Android, iOS, Windows 10 Mobile
Will the game be free?
Single player will be free. I'm still figuring out the proper monetization strategy. It'll depends on how the game is received. So you tell me.
What game engine are you using?
Cocos2dx. Physics and execution engine is 100% custom.
Can you talk a little bit about the multiplayer?
You’ll be able to player with at least 4 people on a single map. It requires dedicated server and the server is 100% authoritative. There will be and input lag implemented to compensate for network latency like most RTS games.
Will there be more traps?
Yes. There are two traps I omitted in the demo because I didn’t have time to build a proper level for them.
The obstacles are too hard! Can you make them easier?
Yes, for the official release.
Your spelling and grammar sucks
That's not a question dear grammar police :)
I wrote all of the game dialog in a single pass with very little editing. This will not be the case for the official release.
Will you add keyboard controls?
Maybe. I always intended this to be single input as I want people to be able to play it on their smartphones. But if there is enough interest from desktop community then I’ll add keyboard controls.
Will there be a map maker?
Yes. Everything you see in the demo can be made from the map maker.
Technicals (for the code geeks)
The entire game module is built decoupled from the Cocos2dx framework, written in standard C++. This basically means the game is framework independent. This is to ensure that the game can be easily built for other platforms with minimal effort.
The game is built around a custom physics and multiplayer execution engine written from the ground up. In addition, the networking library is also completely custom made. I used Cocos2dx framework for all my visual and audio needs.
Even though the demo is single player only, it’s built upon a custom multiplayer engine. The single player runs on two threads: one thread for the server, one thread for the client. For single play both threads run locally. I don’t have any single player code, which means you can actually play with other people with the maps in the demo once multiplayer is enabled.
The game execution is based around a custom command pattern that delegates execution commands uniquely to each client. The server executes all game logic and synchronizes with the client. The server is authoritative, and the client does not update unless server gives it the go ahead. In fact the client has no almost no game logic. This allows the client to very lightweight and prevents cheating when playing online multiplayer. Unlike FPS games this game does not use client side prediction because of the physics system involved. There will be an input lag implemented to compensate for synchronization latency to ensure everyone playing sees the exact same thing. This is especially important for collision physics to be accurate. This also solves the problem of any latency discrepancy during races as to who won first if there is a photo finish.
The maps are designed to be modular and diverse in terms of their uses. One can design maps as races, puzzles, co-op, obstacle courses, or completely abstract things. Maps are designed to be self-containing, meaning you’ll be able to make custom maps once the map maker is released. In fact the 3 levels you see in the demo are all it’s own files, and you can see them in the root directory of the game.
Another unique aspect of how this game is developed is that over 90% of the game logic is self-tested. There are over 400 automated tests that I wrote that covers pretty much all of the code base. Tests are ran every time I build and executes under a second. Running tests frequently and rapidly allows to catch regressions instantly. This ensures high degree of reliability and I spend very little time debugging. If you are interested on how this can be down you can check out my other article.
That’s all on the technical for now. I’ll talk a little more about the networking architecture in a future article.
If you have feedbacks please direct them to one of the following threads:
If you have business inquires please contact me via firstname.lastname@example.org
You can also follow me on my very inactive social media accounts @codensuch
In game art assets by Karoon McDowell
Various sound effects from freesound.org, zapsplat.com
Music from zapsplat.com, incompetech.com, and Chris Hurn
I'll properly credit everyone when I release a proper build! Bear with me for now!