The project is hosted on This repository, this repo is just a loose recording of the development progress.
The project, Terrarum (or Terrarum-renewed) started. (yes, there exists the even older version. In fact, this is 3rd iteration)
First git commit.
Tiles look connected when they are rendered.
there's too much old commits, I won't put them here. Ah, one important commit:
A feature called Roundworld has implemented. The world is now topologicaly cylindrical, where eastern end of the world meets the western end, creating a loop along the X-axis.
I'm on GPL bandwagon now!
I'm on Git LFS bandwagon now!
First implementation of the pickaxe.
Large textures are getting GZipped.
Quickslot re-implemented. This gets broken again in the future, when I moved from Slick2D to LibGDX, and not getting fixed because of its low prority.
Blocks that are exposed to the light are drawn brighter than their actual light level, this improves aesthetics and playability. (looks prettier and ground more recognisable)
I'm on LibGDX bandwagon now!
Smooth lighting is achieved by a shader. Torch (it's not a candle!) casts realistic orange colour, which is based on my own colourimeter measurement. You'll be seeing more things with life-like colours such as this one in the future.
In the actual game, the torch flickers (gets brighter and darker) randomly, which mimics real-life fire.
Skybox is dithered by the shader to remove banding artefacts.
Vertical parallax scrolling (sky looks bluer as you go up)
The titlescreen. This shows the main principal of the design — the minimalism. Fraps was open while taking the screenshot.
One of the proposed inventory screen. May undergo some changes.
The inventory UI now scrolls.
In-game features are now modularised: The base code (engine) and Module BaseGame. More modules will come.
New set of renderers I call IngameRenderer is finally built and it's working.
Postprocessor on the rendering engine.
Experiments of parametric skybox model according to the paper A Practical Analytic Model for Daylight. Actual implementation has not been conducted.
The titlescreen menus (called RemoCon) reworked, they're now more easily expandable.
RNG is now serialisable (for saving/loading world). In-game font got its update
Been testing with the world save/load and got them partially working.
Xoroshiro RNG for everything, including the game's custom build Joise noise library.
Established solid in-game calendar, 4 season-months, 120 days total, influenced from The World Calendar.
Tile breakage now properly displays with the tiling shader.
I'm on Gradle bandwagon now!
Long-dreaded memory leak bug was caught. It's me not disposing 'temporary' GDX textures.
Water now flows, thanks to this article. Added the fluid layer. Removed water marker block.
Platforms are implemented. (if you don't know what platform is, go play some Terraria, it's a great game)
CSV editor was made
Rudimentary sprite walk cycle
The first output of Sprite Assembling: sprites can be assembled from bodyparts and Animation Description Language, using Skeletons and Transforms.
Still have more features to be implemented, but the most crucial parts are working as intended.
Semitransparent-texture-on-semitransparent now renders correctly (e.g. Crude Glass will no longer render "cloudy with sky blue"), thanks to the new GDX version and my improved understanding on alpha; This game now strictly uses "Premultiplied Alpha", and PSD-to-TGA conversion script is also included (dependency: ImageMagick, Windows)
More work on the ingame BuildingMaker
Pre-built tile atlas no longer needed: just make sheet for individual blocks and the game will stitch them together. Blocks can now have all available connecting variations. 47 distinct tiles to cover all 256 possible cases.
First working minimap. Colour is pulled from the tile atlas. Updates every 0.5 seconds
New world system to "actually" support wires. World renderer now draws wires on top of the blocks. You can select which kind of wire to draw.
First working implementation of Fixtures (they spawn and emit lights). Actors won't disappear when the camera wraps around.
Major improvements over the world accessing (pretty much most of the code depend on it) using sun.misc.Unsafe
, formely a 60 fps game now runs 100 fps.
Fallable blocks (e.g. sands) now falls, scaffoldings doesn't get "supports" as the feature is TODO.
The camera will zoom-in/out when you hit the 'Z' key
Implementation of the "air jumping"
World generation now runs multithreaded
Torches now flicker randomly
Faster light simulation
Finally fixing the long-existing bug where certain window size may crash the game
Block/Item/etc. IDs are now strings instead of integers
LibGDX upgraded to 1.10/LWJGL 3
Layer between wall and terrain now has a shadow
Signal wires
Actors will climb gradual slope as a staircase if they are tall enough
Save and load using the proprietary archival format
Multilingual input IME
Added various keyboard layouts/IMEs
Player/Actor head is added to the minimap to indicate where they are
Terrarum 0.3 is released
Dual Kawase blur for lightmap
Terrarum 0.3.1 is released
Actors can block the light
Crafting system is added
Press 'Z' to zoom in/out added
The reworked crafting UI
Player can direct the wire connection whereever they want
Doors are added
Doors now block lights when closed
Rudimentary FPS benchmarking is added
LibGDX upgraded to 1.11
Updated the shaders to meet OpenGL 3.2 standard
BlockStats is upgraded to TileSurvey
A world portal that allows the player to venture into the multiverse
A new format for item spritesheet
A headless bootstrapper now handles the launching of the game, with user-defineable max JVM heap size and JVM arguments
completely rewritten avatar and world loading UI with rename and delete
Bilinear and Hq2x filtering mode
First stars on the night sky
Terrarum 0.3.2 is released
First clouds on the sky
True weather system is added
Sledgehammers are added
Six ecological seasons are implemented for grass textures
Fast random grass spreading simulation
A workbench, the first fixture with a Crafting Station attribute, is added
Can throw an holding item
LibGDX upgraded to 1.12
Terrarum 0.3.3 is released with a completely re-worked skybox model
The ore layer is added
Particle effects are added
A POI editor is added
Tiles are randomly rotated and flipped
More ores are added
Trees are spawned on worldgen
Marble veins are added
The custom audio engine is fully implemented
Footstep and block breaking sound effects are added
Audio resampler is added
Snapshot 23w49a is released
Compression methods for chunks in the savegame can be chosen by the user, Zstd and Snappy is available, deprecating Gzip
Dynamic Source of the audio now tracks the player that changes panning and the lowpass.
Audio engine has reworked so that changing buffer size would not require the game restart
Chunks are only generated near the player
Ambient sounds and codes to playing them has been added
Emissive layer on the sprites. They will glow regardless of the ambient lighting.
New smelter UI is finally working
Explosives!
Terrarum 0.4.0 is released
Terrarum 0.4.1 is released
Verum-Nimply Logic and construction of logic gates