Movatterモバイル変換


[0]ホーム

URL:


inconvergent
Screenshot Boxtype Welcome Notificaton

Boxtype—Devlog (Part 1)

Introduction & TL;DR

In January I decided to start learningClojureScript by implementing some 2d platform game mechanics. After a little while I had a number of game mechanics and level editor features I wanted to experiment with. By mid January I decided to make and release a complete browser game with an integrated level editor.

This post contains some of my initial notes, screenshots and comments on the process.

If you don't want to read a wall of text I suggest a quick scroll down to thescreenshot section.Or you canplay the game!

Game(Play) Features & Requirements

Editor Features & Requirements

Technical Observations & Limitations

Progress & Screenshots

Some of the screenshots have dates that indicate when they were made. But I haveincluded screenshots here as much for their aesthetic as their informational value. Here we go.

Boxtype Screenshot
readme.png

Quick list of possible box mechanics I wrote down when I started. Only a few made it into the finally game, but there are several more things I may want to try in the future.

Boxtype Screenshot
20250107-120450.png

One of the first screenshots that show a basic, working platform mechanics. the Asterisk can be moved, and it has a jetpack of sorts.

Boxtype Screenshot
20250108-234711.png

Boxes have colors (and id's) to distinguish events in the log.

Boxtype Screenshot
20250114-184839.png

Initially the boxes were supposed to be black, and the board a black square. I quickly started experimenting with different backgrounds. Here you also see the initial/working title and the first logo attempt.

Some of the box labels have icons in them. The initial icons (you can see backspace and an arrow glyph in the screenshot) are fromFira Code. Which is the font used in the rest of the final game.

Boxtype Screenshot
reticulated.png
The custom icons in the game areSVGs. Vector paths were drawn in Inkscape. Above is a screenshot of thecljs function that generates theSVGs on demand.
Boxtype Screenshot
20250118-230851.png

More stuff ends up in the top bar. It changes quickly is I start to need more UI elements.

This is one of the first times when a level is fully playable and it is possible to reach a win state.

Boxtype Screenshot
20250128-174137.png

Early parts of the level editor are visible. You can see tentative scaling handles and borders that indicate box type.

Boxtype Screenshot
20250201-142324.png

Spawn point (+) is added to the board. Page background is black (or dark) from now on. We see borders on box labels. Borders are hard to distinguish, and they don't look that nice in many cases. Eventually I move on to use textures instead.

Boxtype Screenshot
20250203-204513.png

More work on level editor. Here the box property selectors are visible in the bottom. The final version only has three different box properties. But here there are four as we seen in the bottom.

The left property selector is set toVisible. Earlier versions of the game had hidden boxes that would only display the outline when you were on them. Hidden boxes were removed from the final game.

The spiritual successor being the box that kills you instantly. Which serves a (vaguely) similar purpose in indicating that some area of the map is off limits.

Boxtype Screenshot
20250205-203440.png

Early experimentation with different color style for edit mode. Eventually the board will have a dark (technically transparent, so you see the dark page background) background in play mode. And a light edit mode background.

Boxtype Screenshot
20250214-194554.png

The first win modal was tied to the board, and its rotation. The final version is a little more user friendly. You can see it in later screenshots.

The level selector has been added to the top bar.

Boxtype Screenshot
20250215-155719.png

Running some performance tests on alevel with a recursive loop. There is no particular emphasis on performance optimization in the code. It runs pretty well considering the simplicity of the engine.

Boxtype Screenshot
20250417-154355.png

Earlier version of the design with initial experiments with texture on the gravity modifier boxes (cyan, gray).

Boxtype Screenshot
20250420-142443.png

This is close to the final design, but the top bar is less elaborate and the background is still white. Also the boxes still have border to indicate type in addition to the color code. In the final version boxes have texture and color.

User Interface & Local Storage

I decided to add some color and key binding configuration. The config isstored in local storage along with level data and player statistics.

Boxtype Screenshot
20250420-213400.png

An earlier version of the finalconfig page. We see some of the EDN encoded data in local storage.

Boxtype Screenshot
20250421-095503.png

Broken key binding config page.

Boxtype Screenshot
20250422-113902.png

Broken color config. In the game you can configure the primary colors used to distingush box type (ice, low gravity) in addition to the box texture. The same (configurable) primary colors are also used in the page design.

Looking at the Final Result

Here are some screenshots of the final result.

Boxtype Screenshot
final.png

Final design of the game showing one of the first levels (Box Types).

Notice the transparent textures for different gravity modifiers in the upper left (invert gravity) and right (low gravity) corners.

Boxtype Screenshot
yay.png

Modal with icons and statistics for winning a level. The level was finished in 48.65 seconds, in 104 steps (touching 104 boxes in sequence). while tilting the world 0 times (manually).

Boxtype Screenshot
texture.png

Close up of the textures on normal boxes (white), gravity modifiers and the page background (top half). The avatar is resting on the underside of the box because it is inside theinverse+half gravity area.

Boxtype Screenshot
oh-no.png

Oh no ... You died in 1.83 seconds after touching one (1) box.

Summary

In summary I think this post is long enough at this point, but I hope you try thegame!

Another post with some more technical details about the level encoding is coming in the not too distant future.


  1. If you have a keyboard.
  2. [*] indicates that I may want to explore it in the future.

[8]ページ先頭

©2009-2025 Movatter.jp