Game Jam Production Log
Ben, Jack, Jesper
Style Moodboard
Aesthetic and Technology Moodboard
Game Idea
The game revolves around a galactic society that the earth recently joined, where in an old soldier, Sky, who fought for Earth’s previous government, gets pulled into an investigation, ordered by the galactic UN which leads to daunting revelations and Sky’s past comes back to haunt her.
If the game was completely programmed, the player would embark on a narrative driven journey. Where they’d fight hordes of enemies in their journey for answers and the truth. The game would still be similar to the product we have so far, but it would also include dialogue options and more detailed cutscenes.
The art style is pixel art, with a 2D perspective. The gameplay is a lot like metroidvanias and roguelikes, in that the character can dodge incoming attacks and traverse the environment by jumping and grabbing walls. The gameplay relies on fast reaction, having to dodge bullets while moving as fast as possible, while also shooting
Slide by: Jesper Blomberg
What needs to be done
As we are working in a group of 3, we will be each working on a key part of the game, one of us will begin working on the level design, one of us will work on the asset creation and the other will work on the code and gameplay in the unity engine. In order to maximise efficiency and create a fully functional game, it is important that we all work simultaneously, but also to work together so that we can plan ahead and make sure that when we bring all the pieces together, it works perfectly.
Slide by: Jesper Blomberg
Plan/To do list
Assets:
Tile maps for office wall, laboratory wall, stairway wall, building wall, and entrance wall
The office desks, seats and door
The laboratory equipment, like a long table, flasks, tubes, containers, etc.
The stairs for the entrance, the pillars, and the trees
Sprites:
Make the MC movement frames, make her gun, create effects to certain animations
Make the enemy walk animation
Slide by: Jesper Blomberg
Extra Inspiration
These are just some images of cyberpunk environments that we used for extra inspiration when designing tile maps and assets.
Making UI and Pickup Assets
These are some basic UI and pickup sprites I made at the start of the project. I first made the heart as a simple health icon, but after some feedback decided to change it to fit the cyberpunk theme a bit more, which led to the top design that emulates a test tube serum with some high-tech pipes that somehow heal the player. The ammunition pickup was pretty straightforward though, so I tried to add some interesting shadows that would make it look slightly less bland. If we keep the ammo pickups in, I will probably add a simple floating glint animation to make them more noticeable in-game. When exporting these, I had to increase their resolution so they won’t be blurry, and also make sure they were all transparent so they would fit in the world better and can now easily be placed in.
Slide by: Ben Menist
Animating An Enemy
After making the profile view of the enemy, and adjusting it to have more robotic legs, I began animating its walk cycle. My first attempt didn’t look very good as the legs didn’t bend or match the body’s movement. So I went back and started again by drawing some stick legs to make sure I got the right motion. Then, I was able to transform and edit the legs into each pose to make the walk cycle. Finally, I got some more feedback from my group to improve it further with longer strides, and I also added a glint to the gun. To improve this, were I to do it again, I think I would first block out all the poses in solid shapes before adding the details to speed up the process. I can also do this for any other animations I do.
Slide by: Ben Menist
Tilemaps
The first tile I made was a simple brick tile, which may not be used but was a good starting point to familiarise myself with the software and techniques. After getting some feedback from my team, I increased the contrast and stuck with rectangular bricks. For the lab floor tiles, I tried out many different designs shown above, but with more feedback and the gradient tool settled on the large design on the right. The lab wall also went through many stages, from a plain gradient wall until its more padded look, but is still quite simple. Some of the more complex tiles are the blue ones I made for the office, which can be mixed up to make interesting patterns. For the entrance assets, Jesper helped me with shading the gold and spacing out the lines, which I think look really cool now.
Slide by: Ben Menist
Advanced Assets
The next assets I created were the lab assets, including the table, which were fairly easy though I did use a reference for the Klein bottle and also had to make sure the pipes linked together. I then made some pillar designs, which I redid again after making blue tiles for the entrance, so that they fit the theme more and were tileable. After finishing the tree, which I’ll get to later, I made a couple of other plants for the entrance. I used a lot of references for these, and you can see a work-in-progress cactus design to the right. Once again I had to smooth out the shading with less dithering and contrast, but increased the contrast for the pot to make it glossier. After all these assets and tilemaps, making the office cubicle and doorway were pretty easy, though also had a few redesigns.
Slide by: Ben Menist
The Tree
This asset was the largest that I made and took the longest by far. I started by filling in block shapes of the tree, using a stick person to scale it. My first attempt of shading the leaves didn’t take too long but also didn’t look that good. So I tried out a bunch of different techniques using references from Animal Crossing, Celeste, Terraria and others, eventually settling on a mix between the first two styles which implied leaves without harshly defining them. After each bit of front foliage was done, checking with my team between them, I did the back foliage and the trunk. For the wood, I used a much less speckly style of shading to give a more ridged texture. With some final feedback from the team on the darker branches, I finalised the design and sent the asset to the shared drive.
Slide by: Ben Menist
What needs to be learnt - code & gameplay
In order to create a game that feels good to play, I need to polish the gameplay mechanics that are the fundamentals for this game, such as the movement and shooting. Each of these tutorials I need to follow each cover seperate parts of the mechanics I want to include in the game, so it is up to my knowledge with the unity engine and C# in order to combine them and get them working smoothly. I think the greatest challenge will be getting the movement of the character correct, as I would need them to flip when their aim goes over their head to give the impression they are fully tracking the enemy and not just the arms moving independently of the body. I will also need to create some basic enemies, which will most likely use the fundamentals of the player’s shooting system and some basic AI that can detect ledges and detect the player.
Slide by: Jack Friend
Moodboard for Skye
For Skye’s design I really wanted to implement futuristic prosthetics, as it ties in with her backstory, and I drew inspirations from a lot of different artists and styles.
Slide by: Jesper Blomberg
Concept Art
The first idea for the game was to have three classes for the player character, which the player could switch between at certain stations in the game. So I made three concept sheets for a big, tank-like class, a quicker and more agile class, and thirdly a mix in between the two classes. Where each class used certain skills that was unique to each class. For the agile class, you’d get to use a lot of technical abilities, using your body and augments to quickly kill your enemies. For the tank, you’d use shields that refilled their strength for every enemy you killed. And lastly the soldier-like class would use grenades and small sentry guns against their enemies.
But eventually we chose to only keep the more quick and agile class. As I believed that that class would fit better with the pace of the game. And it’d be more impactful narratively, due to Skye’s backstory and character arc throughout what would’ve the been the whole game.
So we scrapped the tank sketches and meshed the other two classes together. Then I made four final designs that we as a group chose between.
Slide by: Jesper Blomberg
Final Design Nr.1
These are the final four designs that I presented to Ben and Jack, and we all agreed on the right-hand design. But we decided that we wanted to cut off the jacket sleeve and show off the metallic arm and to get rid of the helmet.
Eventually the final design changed for the ingame character asset, but we would’ve used this design if we had made the whole game.
Slide by: Jesper Blomberg
Concept Art
And Final Design Nr.2
Since the level is set in an office/laboratory building, where the player character has just infiltrated the CEO office and is on the run, we believed that the original final design didn’t fit someone who was infiltrating an office building. So we changed the design so that Skye wears a shirt and suit pants, with a fake respiratory mask over her face since she wants to hide her identity.
Slide by: Jesper Blomberg
Sprite Sheet
Once we had the final design down, I moved on to make the character animation sheet. I made a standing sprite and a running sprite.
A problem that I encountered for every sprite, was that when I used the free transform tool to move the legs and make my work slightly less time consuming. It would always mess up the pixels. So I had to colour in the white pixels, erase or add more pixels to the shoppy bits, and fill in the areas where the knee is supposed to be.
Slide by: Jesper Blomberg
Background
Skye was a soldier for the incredibly authoritarian and oppressive UN of the future. She was indoctrinated and a part of the UN’s elite task force that rooted out rebels and gangs alike. With brutal efficiency. She was awarded several valors of honor, and she was notorious for her violent command when it came to “cleaning the streets” and she was as feared as she was respected. But during her time in the army, she started to question her allegiance more and more as she had to execute innocents and civilians, just because they might be in tangent with the rebels. This all culminated into her not being able to pull the trigger on a young child who was carrying a bomb, which blew her and several of her teamates up. Skye survived though but with several severe injuries. Her arm and legs gone and her throat needs a respiratory device to hold itself up.
After this she then became friends with one of the rebels top leaders, without her knowing that fact. And eventually the friendship bubbled into a relationship and her girlfriend broke her indoctrination and made Skye see the flaws of the government that she had revered. The girlfriend, Lucia, gave Skye the two options between helping the rebels or the government. And she chose to support the rebels. Acting as a spy and being a large factor in the final battle between the government and rebels.
But after the re-established government she was shunned by the public eye. No one had forgotten her dark past and cruel actions. Neither had she. Lucia had disappeared during the invasion of the government’s base of operations, presumed dead. So now Skye lives her life on the verge of being kicked out of her apartment, of living off of scraps. But one day she gets a request from the newly found galactic government to help hunt down rebels, gangs, and mafia families that are all working in tangent for some secret goal. Seeing this as a chance to redeem herself from her terrible sins, she accepts the job and uncovers conspiracies and the corruption that’s embedded in the galactic government.
Slide by: Jesper Blomberg
Scene Setup
To start the game project, I imported the framework of another project that I was working on, as it would come with the movement and player mechanics mostly created. This did come with challenges however, as there was a multi-character system that was intertwined with a lot of the main code, so i had to go through and delete large amounts of code to remove the feature, which resulted in many error messages as it was a core part of the code system. All of the code that remained was tweaked and edited to fit the context of the shooter game.
Slide by: Jack Friend
Shooting
For the shooting mechanic, i had to make a new script in the player controller. This script controlled the rotation of an empty gameObject by reading the location of the gameObject and the position of the mouse cursor on screen and using mathematical equations to turn x and y into an angle, which is then converted from radians to degrees, which is then applied to the z axis of the empty gameObject, which has a sprite and another empty gameObject parented to it. The 2nd empty gameObject acts as a position for instantiating the bullet when the player presses the mouse 1 button. I also implemented a timer so that the player didn’t have to constantly tap the button to fire, and could instead hold down the button for a bullet that is fired every 0.5 seconds.
Slide by: Jack Friend
Enemies
The enemies that were imported from my personal project were far too complex and difficult to change for this project, as state machines require more planning and doesn’t allow for as much rapid alteration, so i decided to code my enemy completely from scratch, without following a tutorial. To create the enemy, i made it with 3 detectors (a groundCheck, a ledgeCheck and a wallCheck) that determine what it should do. By telling the enemy to move to the right constantly, it saves on programming changes in direction and making different animations as instead i could rotate the enemy on the y axis 180 degrees whenever the ledgeCheck returns false or the wallCheck returns true. I also used the same aiming script as the player, but rather than checking the position of the mouse cursor, it instead checks if the player has entered a certain radius and then uses that for the mathematical calculations rather than the mouse position.
Slide by: Jack Friend
Shaders & lighting
For the lighting, something i would argue is key in modern games, i used the Unity engine’s experimental 2D lighting plug-in. This allowed me to have dynamic lighting and use post processing to add a bloom to the glow effects. To get pixel-specific glow effects, each object would require its own unique shader and node tree, this would be done by importing an alpha matte (a black and white sheet depicting where the light should glow) multiplied with a colour shader and added to the main sprite, which allows for pixel-specific glow.
Slide by: Jack Friend
Scene Transitions
To create a smooth transition between scenes, i thought it would be best to use a black fade to transition between scenes as that would hide most of the load times and camera movement ,as the camera would need to move back into place after loading into a level due to the cinemamachine plug-in creating a dynamic camera that responds to the player’s movement and velocity . I set a trigger in my level that would send a message to the game controller when triggered, this message would contain the name of the scene i would like to load, which would then be loaded after a delay as the code works its way through the coroutine designed to create a smooth transition between levels.
Slide by: Jack Friend
Importing Assets
When importing the environment assets, i imported them into an organised folder and added them to my tile palette so that i could draw in new levels, which i soon did to replace the basic levels. The levels are split into 2 designs, one level is a laboratory and the other is an office space. For the Player and enemy, all i had to do was import the sprites to a folder and overwrite the sprites in the animations, which replaced the animations with the ones created for the project.
To send the assets over to Jack, we had to export them as PNGs without resizing them so that he could place them directly into the game at the same scale. For spritesheets it was similar but I think Jack had to adjust them a bit. Also there was a small issue where he couldn’t access the assets in the Google drive, but it was easy to fix by just sharing them again.
This text by BenM
This text by JackF
Issues
When importing the new sprites and replacing the gun sprite, i had realised that there was a fundamental issue with the script which meant that the gun did not flip when the enemy or player (as both utilised the same script) flip to face the other direction. While i was unable to find out the root cause of the problem, after 6 hours trying to fix this issue alone i found out that the best way to solve it would be to counter the rotation of the arm joint by rotating the sprite which is parented to the joint, that way it looks visually correct despite still being broken. Some of my attempts to fix the issue also resulted in amusing glitches such as the infinitely spinning arm.
Towards the end of the project, the pixel app that I was using kept crashing so I couldn’t open it, which meant I couldn’t easily make any more assets to put in the game once we started putting it all together. The only way I could fix it was by deleting and reinstalling it, which meant all the PSP files with the layers were lost leaving us with only the PNGs. Luckily, most of the production process was done by this point, but to avoid it in future I will make sure to back up all the files in more than one place.
This text by BenM
This text by JackF
Game Footage
Bibliography
Code tutorials shown:�Press Start (2019). Unity - Point and Shoot Tutorial. YouTube. Available at: https://www.youtube.com/watch?v=7-8nE9_FwWs [Accessed 13 Oct. 2021].�Brackeys (2018). 2D Shooting in Unity (Tutorial). YouTube. Available at: https://www.youtube.com/watch?v=wkKsl1Mfp5M&t=918s [Accessed 13 Oct. 2021].�Bardent (2019). Movement, Jump, and Animation - 2D Platformer Player Controller - Part 2 [Unity 2018.3.10f]. YouTube. Available at: https://www.youtube.com/watch?v=bZVqz_3_NmQ [Accessed 13 Oct. 2021].�Brackeys (2020). How to make AWESOME Scene Transitions in Unity! YouTube. Available at: https://www.youtube.com/watch?v=CE9VOZivb3I [Accessed 17 Nov. 2021].
Another screenshot of production with a tile palette.