First Post!


This is my first devlog! I'd like to write these more regularly and share how I'm actually making the game.

A quick intro about me: I'm a full time webdev but I actually majored in Game Dev while in school. When I graduated and was looking for jobs in the game industry, I wasn't prepared for the exceptionally low pay and ended up going into tech. After a few years of establishing myself, I decided I want to do indie dev and this is my first time really going all in.

I first started developing this game for a game jam - My First Game Jam back in July 2022 and this was my first game jam in many years. It started off as a puzzle platformer! Portal 2 is one of my favourite games of all time. Solving the logic and physics based puzzles were some of the most fun I had playing Portal 2. I even made a couple of my own levels back then and shared them with friends and family. One of the things I enjoyed most about Portal 2 was the level editor and being able to make my own games. For the game jam, I decided I'd try to recreate a similar game but in 2D (minus the level editor though), and that's when I started work on Teleportal.

I got called away for work during the game jam though and had to travel overseas. Unfortunately this meant I couldn't work on the game in the evenings as I had initially planned. Even though I got cut short, when I came back I decided to continue development. Since then a lot has changed.

The first major change I made was that I removed the platforming elements and simplified the controls. The player character can only be moved by three interactions:

  1.  Gravity
  2. Teleport (player controlled)
  3. Other physics interactions (physics effectors)

This constraint made the interaction system a lot simpler and constrained the design for puzzles. Part of the motivation of simplifying this was that I couldn't demo the game to friends and family easily since it required a keyboard and mouse. Now the game is playable on PC and touchscreens since it really only needs a single pointer (touch/mouse) input.

On the technical side of things, I spent a lot of time abstracting away the idea of switches and "powered objects" such that I didn't have to reinvent the wheel each time I wanted to add a new type of object that could be powered by a switch. This has allowed me to iterate really fast on level design and add new "powered components" arbitrarily.

I then spent a bit of time creating a few levels as a tech demo, mainly to test how the core mechanics were being received by players. In particular, I wanted to avoid writing a tutorial and so I tried to create a few simple levels that would teach the player mechanics just through interactions. This took a lot of time to get right and I ended up iterating a lot on this alone.

A few observations I made

  1. Some players do not experiment as much as others - I literally had some players stare at the screen and just wait for instructions. I would say nothing and eventually they would tap the screen and start experimenting when they realized I wasn't going to tell them what to do.
    1. I took this as a note though that I'd have to draw the player's interest if I am committed to not writing a tutorial or instructions.
  2. Another problem I faced was that some mechanics really required too much trial and error. There's a mechanic in the game where you can swap places with an energy ball. Unfortunately without any clear direction, players would just tap all over the screen and not really notice what they were doing. 
    1. I realized I'd really have to introduce mechanics gradually and very intentionally
  3. One interesting thing was when I play tested with some much younger (<12) family. I had two phones on me and these kids started racing each other to see how could finish the levels the fastest. Another interesting thing was that my mother, who likes playing casual mobile games, really wanted to collect stuff.
    1. This was an emergent behaviour which was fun to see!

Based on some of those observations, I added collectible stars. The collectible stars serve two purposes in my game

  1. Players seem to inherently know they should tap/collect stars.
    1. This draws some interest and adds some motivation for players to start tapping on the screen.
  2. As a designer, I can place stars in specific areas to communicate mechanics
    1. I can essentially force the player to tap on certain places and have them incidentally discover mechanics.

I also added a stop watch to give some incentive towards collecting the stars and solving the puzzles faster. I spent time refining the visual feedback further and redesigned some of the puzzle components until finally my early play testers (friends and family, but different each time) seemed to start progressing and understanding the mechanics better.

I'm now at the point where I'm mostly confident in the core mechanics and can proceed to create more levels, but first I need to close the loop on the game loop itself!

This week I added an end of level summary screen which shows how many stars you collected from the level and a stopwatch. 

I intend to automatically save the leaderboard on the client side first and eventually push to a cloud (steam, google play, etc.). The feedback loop isn't really complete without at least a local leaderboard so you can measure performance against yourself, but the friend/global leaderboard will be what makes the game more engaging.

Next I'd like to do a main menu and level select. Ideally the level select will be dynamic, based on some scriptable objects I already have which store the sequence of levels. I also want the level select to be a bit more interactive and actually reinforce some of the existing mechanics (teleporting, portal doors, switches, etc.). Once I have that level select system in place, I really need to focus on adding actual content. Right now there are only a handful of levels for testing mechanics and it's more like a tech demo than a game.

Files

teleportal-html.zip Play in browser
Version 1.7.0-main.19 Jan 21, 2023

Leave a comment

Log in with itch.io to leave a comment.