Exam preparation avoidance game jam

by

Last week Jonas and I knew that we had to start preparing for our upcoming condensed matter physics exam. Instead we jammed a little game, which should initially only take up one single day of our time, but actually took two. It’s a blatant copy of this game: Attention, German! Copying games is really interesting and it’s always fun figuring out how you can implement something, while maybe even improving it a little or at least giving it a bit of your own twist. I could go on more about this, but I actually just want to keep this blog more complete than comprehensive and actually interesting. If someone will ever read this and maybe even contemplates contacting me about something, then please do so without hesitation. Until then:

Screenshot:

vlcsnap-2015-02-19-17h18m46s28

Editor Screenshot (No actual graphical interface, just a plethora of keyboard shortcuts, a “command line” and only about 3-4 hours of work):

love 2015-02-19 17-33-23-16

Video

Github link

Downloads

Don’t expect it to be particularly fun. It was way more fun to make than it is to play it.

 

Global Game Jam 2015 – “Falling Nukes + Running People”

by

Last weekend my notorious partner in crime, Jonas Lieb, his artist friend Lukas and I attended the Global Game Jam 2015 in Cologne. After watching the keynote, which was not only slightly cringeworthy and partly in a language no one on the site could understand, but also way too long and obviously tinted by Anita Sarkeesian ideology (she was also listed in the section for “Special Thanks”) the theme was announced as “What do we do know?”I initially expected something way to artsy and narrow, like one could expect from the GGJ organizers, but I was very pleasantly surprised. My first idea was making a game with no objective, similar to Proteus, but local mulitplayer and, of course, 2D, but somehow one of the guys had the idea of a game, which was also explorative, but rather a quest of finding something specific rather than finding anything. We decided to make a game in which the players are placed into a world with an obvious threat, initially during brainstorming referred to as a comet, but later implemented as the impending impact of nuclear missiles. It is then the players’ objective to find a way out of this situation by exploring his/her surroundings and finding a way to escape the impending death. We planned on placing numerous different items in the world, which only had capacity for a single player, therefore leaving the rest of the group behind posing the theme question and giving the rest of the team the incentive to step up their efforts. The first major dispute was about the underlying tech of the game either being tile based and only featuring full tiles (i.e. squares) or (my stand point) using arbitrary polygons, which would be edited in a editor specifically made for this game and full images for the whole map rendered above these polygons (which were used for collision). Of course this is a very crude approach and far from efficient, but it was the easiest way this could have been done without major preparatory work. The reason for me rooting for the polygon approach was the fact that, for the first time, we could facilitate having an actual artist who knows what he’s doing and leave him a lot of freedom in designing the levels and all the layers above and below it. Jonas though was of the opinion that a tile based approach was not just a lot easier to implement and was something we did numerous times before, but also gave us the opportunity to create levels a lot faster, without Lukas being the obvious bottleneck of the level creation progress. Of course he was right, but I always prefer trying to make a cool game people will find cool rather than doing something mediocre, that will more probably pan out successful. Thankfully Lukas was on my side and we went with the fancy approach.

After about 24 hours (without any sleep by the way, because I really can’t sleep well if I really want to work on something) we had most of the engine running, a test level and could try out a first prototype of the game we had in mind. Quickly we noticed that our idea was flawed in a way or not feasible in such a short amount of time because it seemed way to easy to find a way out, since the objects were clearly stood out as special/objects to interact with. It would have needed a lot more objects, which were actually useless. And we think this wouldn’t have changed the feel of the game to an explorative one, but rather to a game which is full of useless stuff, you have to filter out by mashing the “use” button. We didn’t want that and were trapped in a kind of design bubble. I started integrating a little “shove”-mechanic which pushed and stunned the player for a short period of time and after testing it we noticed that this is probably the most fun element of the game so far and decided we should focus on it. We then made the decision to shift the game into a lot more competitive platformer, with a lot of punching and maybe other fighting mechanics and a lot more linear levels, that forced the players to initiate confrontations trying to reach the escapes. Sadly this sounds as stereotypical and bland as it gets but it was a lot more fun than our previous ideas would have been, I think (at least if we only had 48 hours to invest). The final result can be seen here:

Falling Nukes + Running People

All in all I am very satisfied with the result. The crowd seemed to like the game and the testers had a lot of fun beating up each other with a little timer in the upper right corner. I’m also very happy that technically it turned out a lot easier than Jonas expected. Also as a very nice side effect another jammer might have joined our ranks. And even better: an (in my opinion very competent) artist!

As a conclusion to the GGJ this year I learned that it is very important for multiple team members to clearly state their goals in making a game to ensure to make the right decisions along the way (unfortunately this was a little problem in our group, as we discovered afterwards).

Also I should spend a little time (Hah! “little”…) to work on a proper animation editor, since Lukas uttered some dislike in having to draw numerous frames for a single character. At first I thought about a bone animation editor, like the one I started for Metroidvania, but I’d much prefer a hybrid like in the beginning of this video: Youtube: How Rayman Legends is Made. Furthermore I really miss the collision detection library I’m planning to make once I have time to finally get rid of the bullet through paper problem, that also proved to be quite annoying during the global game jam. But first: exams, not screwing up my Bachelor’s and SudoHack.

 

New website!

by

I’m using wordpress on a new webspace now. This is the result! Wohoo! Because googling my name will never result in anything related to me, I had to choose this domain.

I’ll be participating in the global game jam this weekend and will surely inaugurate this website properly shortly after it and when I find time, I will make a short “projects” page with a little overview of the stuff I’ve done. But what will probably take a while.

SudoHack – Bits, AI, weapons, movement and a lot more pretty

by

SudoHack is a multiplayer roguelike where you and your friends, playing as computer programs, try to infiltrate a computer system. You gain “Bits” by destroying the guardian programs that are put in your way, but also lose them for every hit you take and every second that passes by. Your goal is to reach the end of the room before you run out of Bits and get destroyed yourself, therefore gaining access to deeper levels of the system, until you reach the core.

 So this week really has been rather productive (sadly just regarding SudoHack).
Video (now on Youtube!):

I added Bits (the little blue things you can see in the video), which serve as a HP/time countdown hybrid. They decrease over time and you lose them by taking damage, representing your integrity as a little computer program guy, because, you know, that’s exactly how that works (#1337hackz0r). I plan on making the games a little more swingy, by picking up Bits being a lot stronger, but also losing a lot more over time. Awesomely though they dont’t just have an effect on a dandy little bar you can fill and empty, but also trigger a (placeholder) death screen, giving you the opportunity to start again.
Which leads me to the jmp-tiles, which don’t just enable you to restart the game, but advance you to other maps once you cleared the room of all enemies, being a key part of the game and also finally implemented!

Also the random weapons have been changed, so I don’t have to restart the game ten times before I can make a video 😉 Now they are a lot more even in power level (by equalizing metrics like damage per second), but I don’t have the impression that they feel that diverse at the moment, which may change after I implemented a lot more special powers or I might just drop the random weapon idea alltogether and stick with weapon upgrades or something. Testing will tell! Also I integrated ShotSynth, which I mentioned (and showcased) in a previous blog post.

Some of you might have noticed (definitely those of you who had the gift of being asked to test the game) that the enemies are not as clever as they could be and often get randomly stuck or behave a little strange. I tweaked this a little and removed two huge bugs I’m still ashamed to even think about, let alone mention to any living person. For days they collided with dead enemies, and significant parts of their behaviour were never executed (still did it).

Formerly the movement was just a regular euler integration with friction and keypresses corresponded to forces that were being exerted on the player mass. But I think that it was really hard to dodge bullets and all in all the movement looked and felt very floaty, albeit smooth. I changed it to partly setting the velocity and partly interpolating into a target velocity, which should (and did) give the game a little more of a Gradius/R-Type feel regarding movement. I really like the change, though some have expressed dislike (In my opinion, mostly because of the significantly different feel).  Also I invested a little time to make the game compatible with the 360 controller and added the traditional twinstick shooting controls, so you don’t have to also press a button to shoot.

Finally the part that was definitely the most fun and the stuff that interests me the most in game programming: the graphics part. At first I added the grid effects, which can be explained if there is any need for it (just tell me), but certainly help to give the game it’s cyber feel I was aiming for and also make the level a lot more dynamic and lively. To enhance these effects and because no cyber space game can live without copious amounts of it I added bloom/a glow effect, which still might be a little too much at the moment and will probably be toned done, but not until I got completely sick of it, which might take longer than anyone likes (but please tell me if you think that I should tackle my severe case of bloom addiction and kick it down a notch). Also I added a scanline and a rgb-shift shader, which should give the game the look of an old monitor, because again: cyber space and stuff. I plan on adjusting their parameters using the current amount of Bits, compromising the image more and more with less Bits being left. The bullets look a little prettier too, players have awesome, yet still unexplicable cyber-tails and on top of it all I managed to squeeze in approximately 60 hours of research and implementation for a neat little aim line.

I also tried a few level generators, that I really, really didn’t like and at the moment I plan on not having random maps, but rather prebuilt and randomly chosen rooms. I will definitely put more time into a generator first, after I built a few to get a feel of what works and what doesn’t.

The immediates milestones are a semi-working prototype for the Global Game Jam, which I will attend from the 23rd to the 25th this month. For this the next things on my ToDo-list are a lot of minor changes, new enemies, a few maps and a new (wordpress) blog!

SudoHack – Enemies and Prettiness

by

SudoHack is a multiplayer roguelike where you and your friends, playing as computer programs, try to infiltrate a computer system. You gain “Bits” by destroying the guardian programs that are put in your way, but also lose them for every hit you take and every second that passes by. Your goal is to reach the end of the room before you run out of Bits and get destroyed yourself, therefore gaining access to deeper levels of the system, until you reach the core.

I really should have spent the last few days on university stuff, but I really couldn’t resist, I integrated two enemy types (a static turret and a “moving turret”, as it’s called in the code) and a background for the “floor”, which was previously just black. Also the bullets look a little different now and being hit by enemy fire decreases your shared HP (“Bits”!) now, just as the general passage of time does. Looking at a diff from gitk tells me that I made a lot more changes, but most of them are not interesting or tangible enough (for non-programmers) to talk about. Also: screen shakes, flashes, explosions – the cool stuff. I think a video is the best I can do now, suspense curve-wise:

Here my roommate (thanks, Jonas!) and I tried a little round in one of the first (and highly unrefined) maps. The weapons are already randomly generated and trying them out or just trying to figure out the AI (which I programmed myself, but sadly still can’t fully predict) is already quite fun.

One of the biggest problems I encountered during this developement session is visual design in general. I had a really hard time figuring out proper palettes for the game and am still not really convinced by them. Also I’m not sure if the current general art style of the game is what I have in mind for it. The general atmosphere is also still very much uncertain, but, I think, largely influenced by music and can easily be shaped with it. If anyone has good ideas regarding the design (colors, graphics, whatever it is), please let me know!

The AI also still has it’s weaknesses (I think at the moment the AI is only a weakness) and it proved a lot harder than I thought to design proper state machines for convincing enemy behaviour. I also realized that this game is very, very dependant on proper balancing. Changing just a few values even a tiny bit has huge impacts on the enjoyability of the game and I think that it will take many, many hours to get it right. I’m happy that it’s still a while until I have to seriously tackle these problems, but it also makes me happy that a very fun game might just be a digit after the decimal place away!

The next steps I’m going to tackle are various changes that, ideally should have no effect on the game dynamics themselves, but tidy up the code base a little and optimize some things that require it at the moment. After that I will change the way the game handles configuration files and make the first distributable version for the readers of this blog to enjoy! I hope that it will take me a few days (or a week), because that means that I spent my time on important stuff. Let’s see how that goes..

EDIT: Seeing how blogger mangled the video quality, I decided to include a link to the original version: Video here! and a screenshot: