Hello there, it's been 4 months!!!
why I waited this long to send out an update???
the mystery is unknown, unsolved and oh hey, look its some patch notes vvv
(before we get to the patch notes)
I wanted to mention, by unanimous vote and my general boredom.
I will be spamming updates much more frequently.
that is all, read those notes now.
the-patch-notes:
fixed alot of minimap tile colors.
fixed old world data messing up button's text causing an error.
added multi-language translation support to all window titles.
added a `/place block_id` command, places a block at the mouse position.
added a preferred_layer for blocks themselves. (for the /place block_id command)
now certain tiles can influence the player's walking speed when touching them.
added more user-friendly multi-line support to .lang files.
fixed ui popups to process correctly and not visually update every frame.
optimized alot of world-related fps problems.
player buffs/debuffs now have proper tooltip / multi-line support.
fixed tooltips closing when some text is changed while viewing. (buff timer ui tooltips)
added object to manage machine processing for tiles.
- optimized machines to only calculate new changes.
- detects changes done to the machine's inventory.
- recalculates recipes and starts timers appropriately.
fixed crack animation on tiles being rendered in the air.
changed the egg plant fully grown sprite to be more visible against most backgrounds.
fixed inventory slot types to load from JSON data.
fixed achievements loading too early before steam could load.
fixed achievements crashing the game cause they loaded wrong.
fixed my pc, cause it blew up basically.
added the lush jungle biome.
added a few tiles for the vine biome.
made world generation like a billion times faster. (maybe even 2 billion)
fixed autotiling speeds.
broke world generator.
broke world spawnpoint.
broke world size.
world generator has been overhauled.
added 4 more biomes.
bug: worlds don't save tiles when generating a new world at the moment.
fixed some bugs with buttons.
added a scrollbar that does nothing on the titlescreen. (good addition)
fixed the titlescreen logo.
fixed a bunch of visual optimizations on the titlescreen.
added a few plants / ore specific biome tiles to the world generator.
added texturepack support. (almost)
[img]{STEAM_CLAN_IMAGE}/43614279/9f8c1870aaf9a05500e34689c6278faf66ed47da.png[/img]
fixed up the lighting to look more cool.
[img]{STEAM_CLAN_IMAGE}/43614279/08ddc9e123ad995cfabfb2100a960eedc1957e8b.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/15c64d811128c2d7a0ec52de002d9f4aea1e206c.png[/img]
added a texturepack selector menu. (almost)
more fixes to the texturepack support menu.
added texturepack support:
the game will provide you with tools to copy the default textures to a folder,
creating a new texturepack for you to start modifying.
an `open texturepack folder` button was added.
you can reorder the texturepacks to have certain packs take priority. (top to bottom)
you can change texturepacks while playing / on the titlescreen.
you can add a "." at the start of a folder to ignore it "texturepacks/.texturepack folder to ignore/"
fixed autotiles not loading.
fixed tiles not redrawing properly.
new world generator now saves correctly.
added liquid lakes / rivers to biomes.
fixed some world generator loading messages.
rewrote the breaking of tile layers + priority.
fixed a floating point precision tile crack amount bug.
added decoration and carpet layers to the world.
fixed pixel offset for certain autotile scenerio, countertops now have correct offset.
fixed mouse selection for certain sprite offseted tiles.
fixed bug where you couldn't right click activate items / place blocks sometimes.
fixed a visual bug where the player's character renderer did not unequip certain items.
now you cannot place tiles on living creatures, including the player.
added decoration layer tiles.
(placed ontop of shorter walls like counters / tables)
reworked tile placing. (now its easier for me to work with)
you can now use a shovel for every tile below walls.
carpets and decoration layers now have
existance
paint
metadata
etc interactions etc etc
finished up the new textbox.
added in some biome-specific plants and soil types.
happy build number 10,000!!!
world save backups are now multithreaded.
entity script is more organized now.
item drops now have animation.
item drops can also emit light.
added multithreading to a few places inside world generator.
added alot of placeholder npcs.
fixed a few multithreading crashes.
added a staircase tile.
added a bunch of items and tiles.
added immobile state to npcs.
added ability to be able hit, but not deal damage to npcs.
fixed multi-threading issues with minimap.
fixed all godot z_index related errors with tiles and entities.
added some Gardener dialogue, plus first few interactions.
made entities capable of falling / jumping.
added experience bar.
added new import spritesheet animation: vertically.
added level up animation.
changed the color of tile collisions,
to help differentiate entity and static collisions. (debug)
added cursor sprites for locking / unlocking inventory slots.
merged tile watering timers over to a new faster design. (machine_processing)
machine processing data is now saved to the world.
added an armor_stand, or is it a mannequin?
added more specific class specification for entities. (dev stuff)
fixed the item trashing animation.
added the data management to wiring.
added picture frame png loading and tile rendering.
added fireworks for firework day.
added wire rendering, placement and removal.
added wire droopy rendering.
added a bounce animation to the wires.
wires now can be hidden.
by default you need to hold a wrench to see them. (item:id_wrench)
added sprite rendering to the wires.
[img]{STEAM_CLAN_IMAGE}/43614279/510397e4cef35d64b763675585d5c695f8073d08.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/3602adf0d369c31212fa8f932e92faaaf3839027.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/a847282c2e9bb388a1e94cd85aade035a20c4ef8.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/71095c129a2309741d3cc1acd81beb1e491b8d70.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/95328e9b4c7463d312f73a7fc0ab3761a8724e62.png[/img]
added control_center tile.
added Peerma Code, a custom programming language
to access wire information, and write programs
to enable / disable tiles.
comes with compilation and error checking.
custom programming language almost have support for
"variable = other_variable + 9 + ..." operations
custom programming language:
still working on token grouping, to get it just right
now have string support " " ' '
now have parenthesis grouping
now have [] < square bracket grouping (for arrays and indexing)
group functions
functions are called `task`
using : for line ending like python
no indention syntax so need a function end keyword aswell (probably) (like lua for now)
fixed a few things with the textbox
can now scroll to line with mouse
enter / up / down etc, also scroll the lines if applicable
have a setting to `show_line_numbers` on the left side
if your world gets corrupted:
the load recent button will now say
"recent world corrupted, load backup?"
it will choose the latest autosave to copy.
trying to figure out order of operation for peermacode
finally, have some super basic code working in the control center tile
peermacode language - added simple operations:
if variable over number [
if variable under number [
variable = number
variable = variable
variable += number
print variable # prints to chat at the moment.
fixed compress_var() for real (herobrine also removed).
now we are sending all layers of the world to the client on join.
layers that work:
all layers.
layers that don't work:
all paint and metadata layers.
player puppet animations added: [aim, walk_aim].
world sends over perfectly.
created server-side events to trigger events in the client or the server.
optimized sending the world by 15%!!! omg!!
some more packets added.
fixed simulate_packet server-side.
finally fixed send_to_other_players() function
now everyone is synced up properly
added breaking and placing blocks through the server.
added breaking tile animation for the server.
(yes you can break blocks together for twice the speed)
synced 99% of all inventory packets.
completely re-writing all of the ui in the game real quick tehe :P. (I'm still working on this today..)
created ui_button.
created ui_panel.
created ui_linking.
created ui_text_node.
added bbcode rendering to the ui_text_node. (bold / italics / underline)
added image rendering to text_node.
added word wrapping.
starting to add proper word-segmentation to certain languages.
currently: japanese and chinese
added clickable hyperlinks.
added optional aliases to hyperlinks.
added bbcode text color.
refactored alot of functions, to use the syntax I use.
added offscreen tracking arrows to minimap markers.
fixed wooden stairs to teleport player to the right position.
made room_warps teleport player back to previously used warp.
fixed keybind for re-centering minimap camera on player.
added some translations to the minimap ui.
made minimap markers selectively trackable.
when zoomed in too much, minimap markers will vanish,
to allow players to see the pixels very close, uninterrupted.
some mouse priority and event order with npcs fixed.
added npc tugging / following the player. (with pathfinding)
added grass spreading (and other general tile spreading functions).
[img]{STEAM_CLAN_IMAGE}/43614279/aa1357b81d5bbe510f7305139d6971308207b36a.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/7ffa993433154823c9bfcdbe3d9534554687b1fd.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/f686557282fce518b02f4f1e38fbfa5a480073ba.png[/img]
added conveyor belts.
they move entities and the player.
they don't move items yet. (coding that differently)
they share the same autotile type as rails currently
and will rotate themselves to match the neighboring conveyor belt.
[img]{STEAM_CLAN_IMAGE}/43614279/5ea1e68f83c8d751e0ea8c2ffbecc81919307785.png[/img]
[img]{STEAM_CLAN_IMAGE}/43614279/02a91c3c036c9d8c8f5f2e7d97c2cf3ff6dcb93b.png[/img]
added a tile rotate sprite and function
r / shift+r to rotate.
conveyor belts now transport items to:
neighbor conveyor belts
neighbor containers
or
the floor
currently all saving / loading of any world is broken (which is good) (currently re-writing)
spriteloading has multi-threading support now.
added theme support to the sprite loader.
fixed a handful of sprite helper functions
that most of the game relies on
fixed most animation related sprite problems
added `/cinematic_mode` command, to hide the ui via chat.
re-wrote world saving and loading. (world generator still WIP so cannot create new worlds at the moment)
added new setting "game_minimize_on_close".
been working alot on the multi-threaded world generator.
not merged into the game project quite yet but
we now have re-ordering for generation steps
steps:
clear_world
generate_simple_biome (places dirt walls and floors, with an outline on the walls)
create_structures
create_map_image (for debug, would show spoilers for the players)
fixed most of the fatal crash issues, a little hard to figure out what causes them
I also added a structure_helper class
which allows you to start the creation of a structure
and place it in the world
it has a few features inside a JSON file
allowing me to change what tiles it prefers its walls and floors out of
random size min and maxes
the ability for the room, to spawn another room
(only works for the first structure you initially called, so no recursive looping by default)
placing adjacent rooms
room overlap collision detection and re-attempts to generate the rooms
when failing to generate rooms due to overlap, we try again once more,
and delete the rooms in a backwards order
to hopefully have more than one room in the end
obviously you can just make sure its impossible to have an overlap based on sizes
but I wanted this option too
I also have a random chance value, for one of the adjacent rooms to spawn (configurable)
added command line argument `-disable_mods` for future mod crash loop prevention
added tag to autocomplete commands
added a dedicated thread for light calculations
making a music maker in-game (basically a midi controller + DAW sorta thing)
added a few things to it
made certain things more independent
put force_update variable in the base class Node2Dv2
fixed the threaded_sprite_loader temp loading bar to be visible during loading of the sprites
mostly just re-adjusting code style
figured out a safe way to log messages with multi-threading.
made logger globally accessible.
I also organized all of the sprites in the game to be loaded more externally
which made the project load faster (on the dev end), but broke more exe export testing.
will have to fix that before I send out this update. (probably)
(done)
here are some more random images I could scrape up:
new ui right click context menu thingy
[img]{STEAM_CLAN_IMAGE}/43614279/289f07d7550cb59ab9d4c76737aca9cc090d9097.png[/img]
new ui button with ui text and emojification + bbcode support (italics / bold / underline)
[img]{STEAM_CLAN_IMAGE}/43614279/9cc5e5f3f2e7b91d5c8c993265758d7e64281322.png[/img]
Yeah so, some things I've entirely forgotten at this point are now in the game
The basic functions of the game are actually now completely broken,
due to the world generator rewrite +
world saving / loading being changed recently.
I approximate that will all be fine
once the world generator is in a merge-able state again.
anyways, we will see what's next
maybe I figure out the world gen, or just merge it now.
regardless there will be more daily updates from Undergrown in the near future.