Post Mortem


Post Mortem

Hey everyone! I want to share my experience developing my first game with you - so here we go!

A short notice about my background: I'm playing game since I can remember, but only got into programming when I decided to study computer sciences. Although I had a hard time learning to code at first (especially because I had no experience at all, except for some html), I soon started to enjoy coding a lot once I get the hang of it. Last year I graduated and started my first job as a webdev. Since playing video games is one of my greatest hobbies soon the desire to develop my own game arised and I finally decided to join a GameJam.

The Idea

The Game Jam's Theme was Mirror. Before the theme was annoucend I know I wanted to develop a story-based game, so I scribbled some ideas:


(sorry, it's in German ;D) 

I tried to keep in mind that the story should be as short as possible, so that I can manage to finish it. I brainstormed for about two days and came up with the following story:

Emma was invited by her Grandma, who is living in the country.  Because her Grandma wasn't at home when she arrived, Emma would explore the garden where she sees a mysterious sparkle inside the small pond. So she decided to get the object out of the pond - a small mirror with (to her surprise) a small mouse inside. The mouse would ask her to help her get out of the mirror, so Emma would try to find a way to help her out. 

Spoiler: Soon they would enter her Grandmas House and finds a hint - a mysterious piece of paper with a text Emma wasn't abled to read, but the mouse was! It says that both persons need to be at the exact same place in their worlds, then the curse would be lifted.

So my main idea was to build

  • a Point'n'Click game with a playable Character
  • a Dialogue System
  • three short Quests (the last two should be mirror-themed)
  • Spoiler: switching between the worlds of Emma and the mouse

The Tools

A heard a lot of good things about Unity (that you can do nearly everything with it), so I decided to develop my game in Unity. I probably could have developed a game in pure Javascript, but I really wanted to make a playable character and Unity seems to be a lot more efficient and easy.

I installed Unity and watched a lot of Youtube Videos (especially Brackeys videos where very useful!), but  it took me a while to figure the most important things out.

I wanted to draw every scene, character and gameobject myself, so I also used Procreate on the iPad to do all the drawings.

The Development Process

Since I never developed a game before, everything was new to me, so here are a few things I learned while developing my game:

Scenes

I don't know if it was the right approach, but for every scenary in my game I made a Unity Scene. So the first thing I needed to learn was how to set up a whole scene from scratch. My senes consist of the background (art), a foreground (art), the player (see below) and the interactable game objects.  I soon figured out I had to seperate every layer in my Procreate files into background (behind the player) and the foreground (in front of the player).

Player

After I watched the 2D-Animation Tutorial by Brackeys a know I had to create a player.psd file with body parts as different layers - so I did that and imported it with the PSD-Importer to Unity. I followed every step, defined the bones and everything and soon I had my very first player-character! This part was a lot of fun and I enjoyed making the player-animations (idle and walking). As for the moving I  wrote a simple script to move the Character when hitting the arrow-keys or WASD.

When I started to animate the player object, I wanted the player to be flipped when changing the directions. But i ran into a weird problem, that took me a while to solve: When i flipped the position (setting the x-value of the scale to the *(-1) value), the player would be flipped by the x-axis but would be teleported very far away instead of just flipping the x-axis on the same spot. I finally realized that the pivot point of the sprite wasn't set correctly due to using a too large sprite with much unused space. So i rezised the sprite and cut it to fit the borders  and remove most of the empty space and now the pivot point was set accuratly and the flipping mechanic worked. 

The next thing I wanted to implemented was to switch scenes when the player reaches the left or right of the scene. So I made colliders in each point which I called spawn points. When the player collides with the spawn point the scene would be switched to the indicated Scene (public string sceneName) and the player would be teleported to the assigned spawn point. While I was developing this feature I soon realized I had to implement some sort of GameController.

Game Controller

Since the player should be able to switch scenes, the game needed a GameController which takes care of destroying and keeping gameobjects, because when switching scenes every object of the previous scene would get destroyed. Gameobjects that should be instantiate when the game starts are the player itself, the story variables, the dialogue system and the camera for example. With this pattern I managed to create global game objects. All the other objects in the scene were loaded statically, like the interactable game objects branch, stone or clockwatch. Especially important were the story variables. I needed a place where I could store the progress of the player, so this was the perfect place. I created variabled like found branch = false and many other boolean variables to keep track of what happened.

Dialogue System

In order to tell a story I wanted to create a Dialogue System and found a great tutorial on YouTube (by blackthornprod). I build a system like it was shown in the video and adjusted it to my needs. I added a spot where I could load a avatar of the speaking person on the left and on the right, depending on the character speaking. To do so I added some public variables like public Sprite avatarLeft where I could link the picture via the Unity Editor. 

Interactable Game Object

This is the "click"-part of my Point'n'Click game. I created a Interactable pattern which I assigned to all game objects the player could interact with. If the player then clicks one of these object, a dialogue would be triggered depending on the progress in the story. Every object has a default text and up to three quest texts which would be managed via a scene script and the global GameController story variabled.

Time Management

It took me about two days to figure out an idea, designing and drawing the game art took me about 5 evenings, developing the game mechanics took me about 4 days overall. Since I'm working fulltime I could only work on the game in the evenings (from monday to friday), but I had the whole weekends to work on the game, too. It was very hard for me to figure out how long it would take to develop a certain feature, because this was my first time developing a game and using Unity - so of course everything took much longer than excepted. 

What Worked

I was very happy about how to world and graphics turned out - I had so much fun drawing the character and background art. I was also very proud of the cute character model and my very first 2D animation. I also liked the story and setting a lot and I feel like developing it even futher <3

I also learned so much in these two weeks and feel like I now have a clearer vision of what it needs to develop a game.

What Didn't Worked

I wasn't able to finish the story and implement all features, I think I planned too much. I should have started a lot smaller due to inexperience and short time. It took almost the entire game jam to set up a base construct for the game (moving the player, setting colliders, build a game logic and dialogue system). 

What's next

I definitely want to finish the story soon! That includes adding two scenes and two mirror-themed quest. I also want to just polish the game a bit more with adding a start screen, a journal and a small inventory. I'd also love to add some minimalistic animations when certain events trigger. Maybe I'll also add some own music (record some bird noises or simple kalimba melody). But I will probably take it slow, because I realized that while working fulltime (as a dev) it's hard for me to code in the evening, too, after coding the whole day. So I concentrate on finishing the art and then add the new features step by step during the next weeks when I find the time on the weekend. <3

Here is a small sneak peak of the next scene:


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Thanks for reading! If you have any suggestions or tips on developing a point'n'click game please let me know! ^_^

Love, exozeta

Files

Archiv.zip Play in browser
Apr 26, 2021

Comments

Log in with itch.io to leave a comment.

Thank you for writing this up.

Since my wife enjoys playing Point&Click adventures, we have some at home. From my experience, it is helpful to have some kind of journal.

So if you take a longer break, it is easier to pick up where you left. This could be a diary of sorts. Perhaps with the written texts added to it as you interact with the objects?