Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 kevad
  3. Arvutigraafika projekt (MTAT.03.328)
EN
Logi sisse

Arvutigraafika projekt 2024/25 kevad

  • Main
  • Projects
  • Topics
  • Results and Schedule
  • Formatting Hints
  • Links

Only Ones

Author: Veronika Kukk


Problem statement

I have been working on a puzzle game where I need to come up with my own puzzles. Until now I have first tested them on paper and then put them into the game to make sure they work. This process can be made faster by having a level creator where I can easily test out the puzzles. In addition, this could be useful in the future to allow players to make their own new levels.

Project idea

I will be developing a level creator for a puzzle game in Godot. I want to create the following features:

  • Level creation UI
  • Saving a new level
  • Editing a level

I have never made any level creators and I am not familiar with saving data in Godot. Therefore, this will be challenging.

Current state of the game

I have a demo out on itchio. It is a puzzle game where you need to destroy zeroes and have only ones remaining. There are two game modes - one where the player has a limited amount of destruction points and the other where the player can use as many moves as they want. The zeroes can be destroyed when two or more adjacent zeroes are selected and everything that is on top of the destroyed tiles will fall down. The player has to plan ahead on which zeroes to destroy first to not have any solitary zeroes that cannot be removed. There are currently about 30 levels and 15 of them are on itchio.

Technologies and difficulties

I will be using Godot 4.3 because this is the engine where I have developed the game. For the art I will use Aseprite which is meant for creating pixel art. For any layout designs I will either use paper or do them in Miro.

As I mentioned before, I have never dealt with saving data in Godot because it sounds scary. I will need to research how to do that.


Milestone 1 (10.03)

  • Research how level creators work (4h)
  • Design the initial layout for the level creator (3h)

I searched the internet for anything related to level editors/creators and here is the information I gathered. After that I wrote down what elements I want my editor to have and tried to visualize what I want in my head. Then I used Miro to create very basic layout designs.

Here are the files that anyone can leave comments on for feedback:

  • Level editor symbols explained
  • Creating a new level
  • Editing a level

Most of the materials I went through focused on the level editors that are used by the players. For me it is more important to create something that makes my work faster rather than something for the player. Therefore in the designs that I made I focused on what I need to have and what I am okay with leaving out. For example I want to be able to add new rows and columns while I am editing and I don't care much about inputting the grid size at the start of creating a level. A lot of the materials put the emphasis on making the level creation fun for the player but I don't need to think of that because this is for me. There wasn't much information about this type of puzzle game level editors that I am making so I tried to follow my gut.

Milestone 2 (24.03)

  • Draw new buttons (2h)
  • Create the base scene with all of the buttons but no saving/editing functionality (1h)
  • Explore Godot node that could be used for the puzzle grid (2h)
  • Create the puzzle grid (2h)

Done

Drew buttons

  • I made the icons for the save, play, minus, add.

Created the base scene

  • Added most of the buttons that I had in my original level layout.
  • I decided to not add the 0 and 1 buttons to the bottom of the screen because I realized that pressing those buttons slows my process down.

Explore Godot nodes

  • I watched some videos on UI nodes in Godot and did not find any better nodes to use.
  • I decided to use my GridContainer idea, that I have in the actual game level, as a base.

Create the puzzle grid

  • I added more than promised, because I used the same system as before and did not have to spend time coding that.
  • I created the grid that holds the columns of the game.
  • I added creating rows and columns functionality.
  • I added removing rows and columns buttons but no functionality to them yet. Although, I made it so next week it is pretty easy to implement.
  • I added changing the value of the button by clicking on it.

Milestone 3 & 4 (21.04)

Milestone 3 (7.04)

  • Add remove rows and columns functionality (2h)
  • Shortcuts for selecting 0 and 1 (1h)
  • Improve the alignment of the buttons (1h)
  • Add moving around with mouse in the scene (2h)

Milestone 4 (21.04)

  • Save a level as a resource (5h)
  • Add the saved level to level chooser screen (2h)

I won't be working on editing levels yet because I have never done saving in Godot before so it will take time to figure out. Since I did not do last milestone, I will finish all of milestone 3 tasks here too.

Done:

  • Added remove rows and columns functionality
  • Shortcuts - left mouse click is for "1", right mouse click is for "0". CTRL + S opens saving Popup window. WASD for adding rows and columns e.q A adds left column and W adds top row.
  • Improved the alignment of buttons
  • Added moving around with mouse wheel click
  • Saving new level as resource - works only in editor, because I decided that it is currently for me not for players. Playing the created level (once) works in browser, just that the data is not saved on the users computer.
  • Level chooser screen loads in all of the saved levels
  • Play new level after saving

Here is the saving demo video in the editor.

Milestone 5 (5.05)

  • Add choosing which level to edit functionality (1h)
  • Clean up level editor functions and nodes (2h)
  • Add tutorial to first 3 levels and lock other levels until tutorial done (1h)
  • Improve title screen and level chooser screens - backgrounds, layouts, animations(?) etc (2h)

There used to be a tutorial in the game but I purged it at some point... So I am adding it back now.

Done:

  • Edit level functionality via dropdown inside level editor
  • Cleaned up some code and nodes
  • Pretty tutorial + levels locked until 3 tutorial levels are done
  • Added menu buttons animations, screen shake, unselecting with backspace key

So level editor is now done and I don't have anything I want to change in it.

Milestone 6 (19.05)

  • Create poster
  • Upload newest game version to itch.io
  • Menu background animation
  • Destory sounds
  • Levels ordered based on difficulty
  • Level chooser screen prettier

Done:

  • Poster base - deadline for poster submission postponed so I will make it look better
  • Menu background animation - did it with shaders but sadly it is too powerful and makes the game lag on phone (web version). I decided to leave it out for now, because for the expo it will be mainly played on phone.
  • Added new sounds - destory sound, button hover sounds
  • Level chooser screen redesigned. In each level you can earn two stars, challenge mode only opens once regular mode is completed.
  • Level end screen prettier

By the way the game is now called Nullis.

After this milestone I plan to:

  • finish the poster
  • create a thumbnail for the game
  • create a new title image
  • clean up the itchio page (add images, colors etc)

And ofcourse develop the game further but this will be in the future, lots of school things to get through first.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused