Defend the Crystal against the other robots and try not to die!
|Move Left||Left Arrow|
|Move Right||Right Arrow|
|Shoot Bullet||Left Click|
|Shoot Laser Beam||Right Click|
Try to survive as long as you can! if you or the giant crystal get hit, the health bar (red bar on the right) will go down. shoot the other robots, trying to shoot you or the crystal to survive longer!
But be careful! you can damage the crystal or yourself as well!
music was not made during the jam.
Please Note: in the changes in the MacOs version a death screen is added (I didn't find any different quick way of showing the high score). this is not subject to rating.
in the Linux and Windows build there are minor changes in code in order to make path loading on different operating systems possible and remove redundant imports (importing math and numpy).
if something doesn't work, please write a comment.
Linux Build doesn't work. I will fix it soon.
So I was able to launch the game. There's seems to be an issue with collision while shooting your left click. sometimes I clipped in the bullet and lose HP.
It has a nice "blaster master" old school feel with the tank.
It would be great if you can build a working standalone version for next time :)
Good job :)
@Lokior, Thanks for the feedback.
Colliding with your own bullets is one of the 'special things' about this game. unforunately a better hitbox system was - like many other features - scrapped due to the lack of time.
for the standalone version:
the rules state:
so we do allow to:
Package or improve the packaging of your game
and because i was short on time and pretty busy the last few days i finally made the executables (currently for MacOs and Linux only).
Hey! I am trying to play the linux executable version and get the following error:
Traceback (most recent call last): File "Crystal_Fighters.py", line 183, in <module> File "Crystal_Fighters.py", line 185, in Crystal File "Crystal_Fighters.py", line 54, in load_img FileNotFoundError: No such file or directory.
It seems like it can't find the images or music files in the build and even though I found those in the source folder, I'm not sure where to put them or if I can even add them post-build.
I now used the source to run the game, just wanted to share the error message for future builds you make. In general, accessibility is important for gamejams and I'd recommend looking into the build process and maybe options to embed pygame in web pages for future jams. You'll already know that though. :)
I like seeing pygame being used and I know how hard it is to get a working prototype going. Pygame is basically like XNA for python - a big bag of libraries and functions to build something, but everything needs to be implemented from scratch. So I'm definitely giving you credit for almost everything you made, because I know it's probably self-built.
Aside from scope and weird physics jittering, the game was actually quite charming when launched. The music is cute and easy to listen to, the sprites are well made and the particle effects on right-click are super cool. All in all, it's definitely playable and just seems quite unfinished.
Would love to see what you build for the next jams. I can imagine that you'll build some systems over time that make it easier for you to focus on game design fully, having the core elements like physics, UI, music already checked.
Well, simple shooting game. Firstly, liked the minimalistic style & neat music.
But as for the game: there are much disbalance; eg. if enemy's car is spawned near the crystal, any its shoot will touch the crystal, so the hp is getting down quickly. Also cars may "grip" you from both sides, so it's sometimes hard to alive.
And as for me, I'd like to get car moving more naturally :)
Anyways, good luck!
@Odrez thank you for your feedback. loading files is one of the points where porting can break everything (in the source code i even provided an option to turn
safe_load on or off…). in this case the loading relied on a special python variable, (
__file__) which does not what it needs to do in the compiled version. Yes, except the Particle system (laser), the resizable window, the non-weird rotating images, the scrolling camera and parts of the physics, everything was basically made from scratch (soundtrack was reused). This game is really unfinished, i am planning to do a post-jam update and I am definately looking forward to the next jam and hope I will have more than 14 hours :)
@DictorDro thanks for the feedback. when i implemented the enemy and the AI I didn't have much time left, so i implemented a not-so-perfect AI rather then nothing… If you are facing multiple enemies, you can use the laser (right click) for splash damage. well… i would have liked to implement a more natural movement, but yeah…
Simple little game that was fun at points, but unfortunately it is hampered by some bugs. the big one I discovered was being able to shoot myself with my own weapons. Luckily I was able to go into the source and hack in a fix but it was still a problem. I liked how there were multiple weapons, at least. The laser was pretty cool.
@Kesslwovv Thanks for the Windows build!
I actually like the idea that you can damage yourself with your own weapons, I'm just not sure that Crystal Fighters has the right gameplay for that; in any case I wouldn't expect it with such a fast-paced platformer game. The enemy spawning is a bit too random maybe. And somehow I didn't get how to actually see my final score, the only message was the number of "frames" survived in the terminal, which I'm not sure are a good indicator. ;-) In any case the game is complete and works well, kudos for that - and the car-bots reminded me of the ancient Moon Patrol, which is definitely a plus!
Nice little game! Biggest problem for me was no way to track how far you got in the game itself. That would have made it way more interesting because then you could compete with yourself or others. I guess you could use the command line output, but that isn't very nice for an end user.
I liked the idea that you can shoot yourself with a cannon, but if you have a weapon that doesn't do self damage, then the other one becomes obsolete. Maybe two cannons and you have to think which way you are shooting all the time? :)
Also, it's pretty hard to use the cannon because you can outrun the projectile :D
Well done for a super short jam!
@Baconinvader the shooting-yourself mechanism is the one hiding behind But be carefull! you can damage the crystal or yourself as well! but yes, this is not the implementation i really wanted. What did you change? did you change the
Bullet in line 252?
@ratrogue I originally wanted to make mirrors, that can reflect the lasers and then you would need to watch out for your own shots. the final score are those 'frames', I know it's not the best idea but i wanted to at least have something rather than nothing. you can divide the count by 60 to get the time in seconds.
@M2tias your score are the frames in the console, you can divide them by 60 to get your time in seconds (i know, not so great but better then nothing). During post-jam playtesting i realized, there is litterally no reason to use the cannon. you can hit yourself, it's slower, it does more damage and it has the cooler effects… the two-cannon concept was my original idea, but this would have required a lot of work balancing and playtesting until it feels right.
Nice! I survived 4067 frames.
The concept of a "defense platformer" is somewhat new to me, but it works okay, although the concept of a jumping tank is a bit weird.
Controls feel good and responsive.
It's nice that there's a choice between two weapons, but the laser is almost always the better choice unless you risk hitting the crystal. Some more balancing could be done here, such as a longer cooldown or limited energy that you have to replenish with pickups.
The difficulty curve is a bit of a hockeystick; it starts out gentle but once the going gets tough, it gets really tough really quickly.
numpy is a pretty big and complicated dependency if all you need is arctan2, sin, cos, pi (all available in the builtin
math module) and rad2deg and deg2rad (easily implemented yourself in a single line of code each).