Designing the character

Since its my first try on creating all the art myself, I opted for a simple level and character design. After drawing up multiple silly stick figures I started re-iterating on how these designs could work in pixel art. While I seemed to find a couple of cool designs and was able to make them look, in my own view, awesome… I started to notice that animating these designs would be a bit too difficult for me. And back we went to the drawing board.

I already had some tiles drawn out with their mechanics written down and started to draw my character on top of it. This gave me as a beginner a lot more of an idea on how detailed and how large the end result had to be. First a silhouette, then basics like hair and skin, add some clothes… VOILA! I transformed the stick figure design to an awesome protagonist, which also wasn’t too complex for me to animate as well.

Stages of creating the protagonist

Animating the character

Cool protagonist, check, some example level tiles, check, mechanics of said tiles, check. Next bullet point on the list: “What would need to happen to the character to give the feeling that the players choice actually matters?”

Since I started off with the theme of “Secret Agent” I already looked back at the wonderful traps used in movies such as James Bond and Austin Powers. What could a secret agent be without the danger? Maybe a toy store clerk… To add a sense of danger I opted for using “deadly” traps instead of adding blood and guns. I wanted to keep my target audience towards teens and adults but did not want to exclude children, because who doesn’t want to be a secret agent (I sure do). This also meant that I had to create a separate animation for each trap that I added to the game. More traps = more animations. To make sure I had a decent reference animation I recorded myself with my phone acting out how the character should move.

Once I had my reference material I could finally start animating, right? Not really. Before pushing several hours into animating the protagonist I looked up several tutorials on how to make good pixel art animations, how to make the legs look “realistic” instead of spaghetti-like, how the animation changes based on its speed or length, … all things that need to be considered before making it. After all that work and finally giving it a go, I myself can say that the end result speaks for itself and it has become the basis for my own part in the art of my future projects 🙂

The finished spritesheet for the protagonist

If you have an interest in trying the project, you can send me an e-mail. Do note that I currently only can give alpha access to Android users. And if you don’t have an Android device, why not give me a like instead on Facebook for now?

As stated in the previous post, I selected the DB32 palette as the colour palette for my project. The DB32 palette is a palette which uses colours that are selected in such a way to be as multi-purpose as possible. This also means that you have to think about how certain elements work together as in contrast and coherence. One example is how the player character might conflict with the tiles underneath it… or how some shadows change the character design.

Analysis of the DB32 palette

The art style of a programmer

The first version of my game was very simple and had an art style you could place next to a painting from the minimalism movement. I selected a limitation of colours to force myself more into the direction of optimized design creation. This creates an opportunity as a programmer to define “how” my art needs to be created to make the whole project feel like one consistent game. When I finally got the hang of the DB32 palette I was able to define the art style for my project, which will also become the foundation for my future art.

How does this work with colour blindness?

Well… due to the limited palette; which also is limited by its own saturation “nodes”; and by selecting specific designs which are easily recognized we can create a more open way to communicate to the player. A player will easily distinguish a green button from a red/orange one because of the icon drawn on it.

Why directly take colour blindness into account? First of all, if you work it out from the start you don’t have to break your head over it trying to fix everything later on. Next to that, I myself am green/red colour blind and have had my fair share of losing games because I could not comprehend why 2 grey-ish looking blocks would not work together… eventually having a friend tell me those were two different coloured blocks.

A selection of tiles in the game

By making use of very simple shapes the player is able to play the game in black and white and still should be able to complete the level. This way I can ensure that the player is able to play the game without hindrance from colour blindness. This way of designing art is sometimes hard to prepare but once it is defined in the project, it will become a lot easier to create new assets without overlapping between icon designs.

If you have an interest in trying the project, you can send me an e-mail. Do note that I currently only can give alpha access to Android users. And if you don’t have an Android device, why not give me a like instead on Facebook for now?

As a child I always loved spy movies, playing one in a game is a whole different level of awesome!

Well now I am making such a game, I present to you

The main screen for Secret Agent P. Uzzle

I started this project on the 1st of September as a challenge for myself to create my own art. For this project I selected the palette DB32 which limits my colour selection without losing the openness to designing interesting pieces which are easily recognizable by colour-blind players.

In the upcoming blog post I will go over what is currently in the project and insights on how I approached these elements. Next to that I will go into detail on what I am currently implementing in the project and what will be added in future updates.

If you have an interest in trying the project, you can send me an e-mail. Do note that I currently only can give alpha access to Android users. And if you don’t have an Android device, why not give me a like instead on Facebook for now?

As you can see, I have a new theme for my website. I’ve been working a lot on improving my site to look professional but remain simple. I’m not the person that likes a lot of extras on a website and my design reflects how I am in some way as well. The theme is completely written by me with HTML, CSS and some touches of PHP and during the creation I received help from Eline with her design tips and the funny moments during the creation.

If you find something that doesn’t work, you can always give me a heads up and I will try to fix it as soon as possible.

I hope you like the new version and most of all I want to thank Eline again for helping me with the design

I updated my enemies with a simple behaviour:

  • defensive will hide when hit once,
  • balanced hides when too much damage is taken,
  • agressive doesn’t care,
  • if ammo clip is empty hide and reload

The enemy has several states which it can use:

  • Spawned,
  • Run,
  • Hide,
  • FindCover,
  • FindPlayer,
  • Shoot,
  • Dead
Visualization of how the nodes are connected

With this there is already some sort of behaviour to the enemy which already helps the level to be more interesting.

I added my A* pathfinding algorithm to my enemies. This system is based on my waypoint system that I created in the previous updates of my project. I had issues with the correct pathfinding due to a small error in my script which overwrote my original path, but once that was corrected the script ran just like it is designed to.

Presented here is a small part of the pathfinding algorithm method, this is the method that will keep going through all the waypoints until the goal is found OR there are no waypoints left to use.
To know about this part of code:

  • openList, visitedList and reachList are all lists which keep track of the pathfinding algorithm items. openList is used to keep track of the still to process waypoints specifically, visitedList contains all the waypoints that we already visited and are not usable anymore. reachLine is the only List that is used merely for the end result of our algorithm, it contains the final path or stays empty when no path is found.
  • I reverse the reachList before returning is to set the List correctly that my unit can directly use this List for following the path.
  • CheckPath(Waypoint wp, float newCost, Waypoint parent) checks if the waypoint wp is a path which is worth to follow or not
  • ContinuePath(Waypoint destination) is a looping method, but has two exits by returning. The first return is triggered when we don’t have any new waypoints we can test (and as an extra safekeeper when foundGoal is true) and the second is triggered when we found our goal and created our path to follow.

ContinuePath method

Since I already had my project started before creating a website, I will put the current updates in one post.

The Hunted Update 5

The Hunted - waypoint system
I made a small tool that will generate a grid based on the waypoints in the level, first I wanted to use the A* algorithm to find all the waypoints that could connect. But after a small test I found out that this is not the best way to start making the grid. After some research I found that a distance based algorithm would be the fastest way to start creating this grid, which will make a good base to work out the grid even more with A*.

The Hunted Update 4

Currently working on a waypoint grid system. At this point it raycasts 360° on the Y-axis to collect all the “visible” waypoints. Using A* with unlimited raycast length takes too long to find all the paths the enemy can take over the grid. Having issues with the SetDirty(object) method due to not firing correctly in the tool. Using SetDirty should enable Unity serialization and saving so that the waypoint grid will be cooked/baked into the level so that I don’t have to set them all manually. The waypoints become invisible and untouchable when the game is started, so they won’t be having an effect to the gameplay.

The Hunted Update 3

Created a simple level (part 1 out of 5) to run around in which has multiple dead spots and bottlenecks. This will influence the gameplay, the game is a survival game so the player should be able to get into a tight fit when playing the level.
Updated the recoil for the base weapon, created the base for the gametype, added visual feedback for the weapons, life, time and game info.

The Hunted Update 2

Created a base weapon which makes it possible to make and change weapons quickly. Added weapon inventory system and RPG assets for upgrades. Changed the camera type from third person to first person.

The Hunted Update 1

Start of the project. Thinking out what kind of game it needs to be, what the current goal of the project is.

Set up a scene with a simple playercontroller which has movement and aiming. Started on making a script for the base weapon.