This is my contribution to the 2017 Zenva Phaser Hackathon. The competion is held from July 6th to July 30th 2017 with the goal to create a game only by using phaser. However there were some rules each contestant had to respect. The most notably onews were that only predefined assets could be used and that the complete game must not exceed 500 KB of disk space.
To create the games dist folder you have to setup the build
pipeline. This is as easy as running npm install
on the projects
directory. This will install required dependencies (i.e. gulp). Then
run gulp transpile minify
to create the dist
directory, which will
contain the games sources. You can verify that the required space does not
exceed 500 KB by running gulp calculateSize
. Then open the index.html
and the game should start.
Robots is a game where you control a robot and try to survive as long as you can. Other robots will spawn and attack you. But fear not! Dodge their bullets and fire your own to destroy them and gain loot and other goodies. These will help to upgrade your robot.
Your robot has 4 main states, namely attack, defense, speed and health. Attack and defense are used for damage calculation once your robot is hit. The formula is quite complex and tweaked, such that you last at least a few hits before you die. Speed controls not only your translation speed but also how fast you can rotate. And health is the most important stat you need to focus on. Once it drops below zero you are dead. Don't worry! Your health is replenished after killing an enemy robot.
There are several possibilities to gain loot within the game. The most obvious one is to open chests by destroying them. Once they are opened you get a persistent boost of one of your main stats. So do not focus that much on killing robots and get some chests too!
Every once in a while there spawns a boss robot. There will be a special notification for this event. The boss will be displayed as a red dot on the minimap. But be careful the boss has way better stats than any other robot including yourself (probably). Also the boss has special attacks like the stun jump and a periodic meteor hail. Each robot will explode instantaneously upon boss collision. Boss fights are only for the best of the best. But believe me it is worth it. According to the legend one will receive its power when a boss dies!
The world of Bots is dangerous by itself. But pay attention to your surroundings. There are random events, which you should avoid. This can randomly placed oil on the road, which will slow you down or even meteors dropping from the sky, which will likely kill you instantly. Sometimes the earth shatters for no reason, stunning each robot nearby for a certain time.
Keep everything in sight by using your hud. Simply press shift (or tap the button when you are on mobile) and show your HUD. This contains information about yourself, the current robots ranking based on their level and a basic help as well as a "how to". Never get lost with your HUD!
- Check licenses
- Add more robot ai types (timid, circeling, random)
- Add consumables - invisible, mirror, stun enemies,
- Add randomly placed obstacles (destroyable and not destroyable)
- Add mines as secondary weapons and add camera shake for explosion
- Scrolling message window (like a ticker)
- Add more weapon graphics
- Increase size of robot for the minimap based on kill counter
- Add temp stat boosts for special actions
- Add task systems, which give medals and stat boosts
- Add stats for controlling weapon system
- Add randomly placed structures (like a maze/labyrinth)
- Add pause mode in game
Minify assetsTweaking game parametersAdd help for minimap!Show hud in the first game or a hint so that the player knows how to show itDo not spawn boss continuously and place warning when he appears (with warning symbol, flashing screen and shaking)Revamp damage calculationAtk, Def, Spd, Health fixed values based on chosen robot (yellow -> good def)Add soundsSpawn protectRobot should emit smoke when on low health (only bosses)Add randomly driving robots for menu (just to make it more dynamic)Add oil on street againDraw healthbar in different colors based on HPAdd menu, settings, credits, optionsAnimate gaining loots and stat boostsDrop loot after killing another robotStatistics per TAB Button (With points, ranks, history, etc)Add start button in menuAdd bosses (Can jump and stun robots within distance, can drop missiles, yield medals uopn defeat)Add more crate graphicsAdd robot shadowsKill notification like in CS:GOFunny names for botsDraw human robot in another color for the minimapRespawn player after deathAdd support for mobileAdd explosion tweens and scorch marks after killing a robotAdd tracks to robot for the last 100 meters
This game was developed as part of a hackathon. Keep that in mind. The code and its structure does not need to apply to the highest quality standards and this game might contain bugs. If you have feedback to both see the about me section to find out how you can get in contact with me to actually tell me your feedback.
While the game runs on 60 fps on my machine it does not need to do so on yours (especially when your device is a mobile device). There are many objects, which need to be rendered and calculated. There can be many optimizations done, but again, this was a hackathon. So bear with me!
- Robot pack
- Tanks
- Smoke Particle Assets
- Topdown Tanks
- Game icons
- Cloud set
- Onscreen - Controls
- Sokoban (100+ Tiles)
- Space Shooter Redux
- FREE UI ASSET PACK 1
- Stone blocks
- 50 free textures 5 - with normalmaps
- Explosion
- Powers Icons
- droplet4 by willy_ineedthatapp
- whack01 by Qat
- LightBulletPing by wilhellby
- PVC Rocket Cannon_2 by bowlingballout
- MoCa abstract kick by moca
- Hand Painted Texture - Sandstone
- Hand Painted Texture - Floor Tile
- 95 Game icons
- Bomb Explosion Animation
- LCP Terrain Pack
- 2d Lost Garden Zelda style tiles resized to 32x32 with additions
I am from Germany and involved with programming for almost 15 years. I actually started with developing games back in the days with C++ and OpenGL, before switching to Irrlicht 3D, Unity 3D and finally PhaserJS. So far PhaserJS gave me the best experience, since it is easy to understand and extremly powerful letting me completely focus on the actual game. Projects with the previously mentioned engines were never completed, since I got stuck in patching the engine or building missing parts (i.e. gamestates, object pooling, ...).
This is the first bigger game I finished. You can play it on itch.io. Any feedback is appreciated. You can contact my via twitter, email or provide the feedback directly via itch.io. Thanks for reading, playing and feedbacking!
This game is available as open source under the terms of the MIT License