Home Netlogs Art Info Donate
Shop demo for Godot Engine 4
September 29, 2026

I recently (roughly) finished creating a small demo for Godot 4 in order to demonstrate my skills of game development, asset creation in 3D and 2D, and primarily, game and general programming skills via C#.

To demonstate these skills, I created this demo of a fake in-game shop. While it's not connected to any real game functionality, a proper system that could be integrated into a game with scalability was implemented.

A screenshot of the shop. The shopkeeper is front and center and a list of items is on the side of the screen.
Click for full image.
What the shop's main screen looks like
A screenshot of the shop's description page. A model of a hot dog floats as the hot dog item is selected on the menu.
Click for full image.
What the shop's description screen looks like

The shop system

The way I made the shop scalable was by utilizing two seperate JSON files that are configurable by the developer: one JSON file, "items.json", lists every item in the "game", which includes properties such as its name, a unique ID (duplicate IDs are checked for), the type of item, "points" that can go towards health, magic points, etc, the 3D model associated with it, etc.

The other JSON file lists the data for a given shop, "shop_data.json". Each item is referenced by ID and given an associated price. The price is handled this way so that various shops can have differing prices if the developer desires.

When the demo begins, the "ItemManager" ingests all items in the "items.json" and creates a Godot dictionary from them that is referenced by the "ShopManager", which itself creates a list of items from the "shop_data.json" and then uses that list and the "ItemManager" to pull other information for each item to create listings in the shop.

What I learned

If I had to list everything I learned, it would take paragraphs upon paragraphs, but I think the most important things I learned can be condensed into bullet points.

Prototype screenshot from July 2026. The shopkeeper sprite is different and the graphics are unfinished.
Click for full image.
Prototype screenshot from July 2026

What I could have improved

Since this was my first project in Godot, and my skills are still fairly basic, I did not worry much about keeping things absolutely organized and clean, but reviewing these things is important for future projects.

I think I'm still wrapping my head around making objects and functions of projects like these properly modular without unintentionally creating load-bearing classes or objects. If I could redo the code for this project, that would be my first focus.

I would also make my first step creating a proper vision for the project, specifically in its visual design. I ended up wasting some time because I created assets, which I then changed my mind on when I fully realized the style I wanted to go for. I think cementing a solid vision of how the demo should look would have been a vital first step, but I also did not know if I would be able to finish the project since I was learning as I went, so I give myself a bit of leniency in that regard.

Some assets designed for the demo are poorly optimized, with textures being larger than they need to be, having amateur texturing and UV work done as well. I think the assets made are presentable, but I definitely would want to improve the opimization on them, as well as how they actually look.