Speed Update

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.