Solianiko (Demo Available)

I want to present to you «Solianiko» - an adventure game with tower defense elements, inspired by Ukrainian mythology and historical heritage. Embark on a unique journey with the robot, who will have to become a Chumak, a master salt merchant who conquers treacherous mines in search of resources and defends himself from the waves of myrmidons of the ruler of the underground kingdom, Zmiy Horynych.

Demo is available at Solianiko by Little Funny Souls, mozokevgen

Game was made during Gamedev Camp (Season #4).

Pls live your feedback and vote at GameDev Camp Season 4 Jam Page - Rate Solianiko by Little Funny Souls, mozokevgen for Gamedev Camp Games - Season 4 -

Game was made by the team “Little Funny Souls”, where I took on the role of a programmer. This demo was made in 3.5 months by a team of 3 (in the end 4) people.

Special for you fellow forum readers I’ve prepared some more technical stuff.

Game made with Defold 1.7.0. I’m planning to update it to 1.8.0 in a week or two.

Used libraries:

  1. GitHub - britzl/ludobits: Utilities for game development using the Defold engine - great package of utilities. In this project I’m mostly using broadcast, util and flow.
  2. GitHub - britzl/defold-input: Simplify input related operations such as gesture detection, input mapping and clicking/dragging game objects - using for player controls. In future I want to add mobile and controller support. Also using cursor module to highlight interactive objects.
  3. GitHub - britzl/monarch: Monarch is a Defold screen manager with transition support and a straight forward API - screen management. I use this library almost in every project.
    Here the main menu, comics, pop-up windows are all screens. Zones in mines and camp are slightly different, I’ll tell about them further.
  4. GitHub - rgrams/rendercam: A universal render script & camera package for all the common camera types. (for Defold) - our game now is fully 2D, but we started our experiments with a 2.5D view with characters as sprites. You can see our experiments here . But during development we decided to go full 2D. Usually in this case I would use an Orthographic camera extension.
  5. GitHub - Insality/druid: Powerful Defold UI component framework - used for all GUI, with additional custom components.
  6. GitHub - subsoap/defsave: Save and load config and user data persistently between a Defold project's sessions - I’ve planned to add saves, but didn’t have time before the release, so we cut them out :slight_smile:
  7. GitHub - subsoap/defglot: A localization module for Defold - Also what I’ve planned is a translation. For now it’s only in English. And in fact I haven’t implemented any defglot.set_text statement. So in future I need to rewrite all static texts to a dictionary.
  8. GitHub - indiesoftby/defold-sharp-sprite: Rotated Grid Super-Sampling (RGSS) for the Defold engine. - we have high resolution sprites scaled down to feet the screen. Sometimes it results in blurred sprites. To fix such an issue I’ve used this extension.
  9. GitHub - selimanac/defold-random: PCG Random Number Generator Native Extension for the Defold Game Engine - a library with random generator implementation.
  10. GitHub - defold/extension-spine: The Defold specific Spine runtime implementation - at some point an animator joined our team and we have partly Spine animated objects, enemies and Main screen.
  11. GitHub - defold/lua-language-server: A language server that offers Lua language support - programmed in Lua - even though I use mainly VScode, I like to have this extension installed to have the opportunity to navigate through code in the editor.
  12. GitHub - subsoap/defos: Extra native OS functions for games written using the Defold game engine - use it for “fullscreen mode” and in future want to hide the cursor.

Some build report (from HTML5 build report):

  • Total build size 207.4 MB
  • Atlases is 153.84 MB
    We have a lot of graphics :slight_smile: Biggest atlas has 8192 x 8192 size, and we have several of 8192 x 4096. We have a web build, but it sometimes could fell a little laggy. I thought that 8k atlases wouldn’t work at all :slight_smile:
  • Sounds 24.84 MB

When you are playing in the “mines” zone you can walk between rooms. Every room is a separate collection and navigation between them is made like in this example GitHub - Dragosha/slasher-prototype: Defold. Lua. Game prototype. 2.5D perspective view. Levels loader, a hero controller, simple monsters logic..
Main mines collection has a mines.script with links to every zone and tunnel (that connects zones). They all have their room number. In every zone there is collision obj, that on trigger event sends message to the mines.script with its key property. mines.script unloads current collection and loads new one, according to trigger key.

Lighting is a mix of a example and a slasher-prototype.

Interactive objects outline - is just two sprites with the same image. Second sprite is set to z position -1, scale 1.05 and a material that draws all in white color.

varying highp vec2 var_texcoord0;
uniform lowp sampler2D texture_sampler;
uniform lowp vec4 tint;

void main()
  lowp vec4 color_of_pixel = texture2D(texture_sampler, var_texcoord0.xy);
  if(color_of_pixel.a >= 0.1)
    color_of_pixel = vec4(1.,1.,1.,1.);
  gl_FragColor = color_of_pixel;

This sprite is enabled and disabled based on cursor hover messages, form Defold-Input extension.

Also I’ve tried to make some kind of scriptable sound component, for our Sound Designer. And I want to prettify it and move to a separate module. I’ll share it later.

Feel free to ask or advice anything :grinning:


your game is adorable. Thanks for being a part of the Camp. Can’t wait to watch letsplay on Thursday