Version 3 "Fire and Frost" - Detailed Release Notes
9 July 2023
You can also consult a shorter summary.
Object enchantments
- The "examine" action of the context menu now opens a brand new object manipulation menu featuring object enchantment. This action is now also available for the held items.
- To enchant an entity (such as an item or a plant), one should first make it sentient. It can be done directly from the object manipulation menu or by using the "augment" fragment. Animals and pre-enchanted objects are already sentient.
- It is now possible to create or modify spells of another sentient entity.
- One can activate or deactivate the existing spells. It can be done from the object manipulation menu or by using the new "activate" fragment.
- When activated, the spells are triggered automatically on a regular basis (every couple of seconds).
- Only scripts with zero parameters can be activated. Also, for the moment, only one enchantment (per entity) can be activated at any given time.
- If a triggered spell is still running, it is not triggered again. If it is still running when deactivated, the spell execution is aborted.
- Removed the "enchant" fragment. Copying existing scripts to another entity will be implemented later.
Temperature simulation
- Added a notion of matters. Each entity can be composed of one or two matters; for instance, wood and water. Each matter has its own thermodynamic parameters such as specific heat capacities and latent heat, phase transition temperatures, and so on. Two-matter simulation allows a wide range of interesting effects, such as dry and wet wood simulation, wet and frozen clothes, burning food, and even metal ores, when we come to that. Matters replaced ingredients for the digestion related purposes, and can also be mapped into energy aspects for all magic related interactions.
- Implemented three-phase temperature simulation, including melting/freezing and boiling/condensation phase transitions. Two-matter entities are correctly simulated, e.g. a piece of wood can not be heated to over 100 degrees Celsius (212 degrees Fahrenheit) until its water content is completely evaporated.
- Added carbonization pseudo-phase transition for all organic matter. It will be reused later on for various charcoal-related mechanics.
- Re-implemented burning based on the temperature mechanics. Fireball-induced burning now has a different nature akin to some fuel burning on the surface: it can take place on an entity of any temperature and will release the energy to heat the entity up. The game tracks the amount of the "surface fire" which will die out after several seconds if the entity does not catch fire by then.
- Conversely, the regular fire is only possible when a body temperature reaches 300 degrees Celsius (572 degrees Fahrenheit). Once started, normally it will continue until the entity is fully consumed, unless an important temperature drop occurs.
- Re-implemented cooking based on the temperature mechanics. The cooking now starts whenever a piece of meat reaches the temperature of 70 degrees Celsius (158 degrees Fahrenheit). Also, the burning damage now damages entities, as all other damage types do, and does not cook anymore.
- Added on-screen "glimpse" information on the internal state of the entity the player looks at, such as the water contents, the level of cooking, carbonization, or burning (including the remaining time rounded to 5 in-game minutes). This information is shown in the middle of the screen just below the crosshair.
- Added temperature diffusion between the entities in close proximity, as well as between the entities and the terrain blocks such as air or earth. Added the "touch" link type. This allows fire propagation to nearby entities.
- Added terrain temperature diffusion, and the current temperature information in the HUD. The diffusion in air is much faster thanks to the convection.
- Thanks to the diffusion implementation, it is now possible to cook pieces of meat by simply placing them close to a fire.
- Added global daily temperature variations, depending on the time of day.
Gameplay and balance
- Significantly decreased the hunger growth rate.
- Changed the number of energy aspects from 10 to 8: Crystal, Earth, Bloom, Water, Fire, Air, Metal, and Rock.
- 6 small branches now appear along with the logs when cutting down a tree. As they are 3 times shorter and 4 times thinner than the logs, it is much easier to make them burn, even though all cut wood is very wet.
HUD and menus
- Added spinner widgets. They feature increment and decrement buttons, fast increment and decrement, direct input, and step and range control. Also added support for fractional input. Unexpected keys are now refused depending on the allowed range and precision: letters are always refused, but the minus sign and the dot can be accepted in some situations. Built-in numeric types have limits of +/- 1 billion.
- Better label centering and custom spacing inside containers.
- Removed "take and put on" hybrid action. Having two separate actions is quite enough.
- Certain actions are not proposed in the "set as default" list anymore.
- Changed the default value for "Invert Y axis" to "No".
- Re-enabled vertical sync by default (it serves as a rate limiter).
Spell editor: fragment information at a glance
- The fragment and script parameters are now shown in the left pane, as well as the initial variable values.
- This allows seamless "reading" of the spell without clicking on individual fragments to see their parameters.
- The parameters for a given fragment have additional indentation. They have the same action on click and the same drag-and-drop behaviour as the fragments they correspond to.
Spell editor and MagicScript: custom types
- Added lists (enumerated types or named bitmasks) and range types. These types can be used for variables, but also for script and fragment parameters (although the spell editor currently only supports viewing such variables and parameters, but not creating them).
- For the moment, one can not create new custom types. They are limited to the types required by the built-in fragments.
- Modified all enabled fragments so that they use the lists for their parameters whenever possible: energy aspects, entity and terrain types, simple filters and filter actions, sort types and sort orders, hands, motions and actions, matters, surfaces and surface orientations, links and references, flags and capabilities, attributes, and sounds.
- The spell editor now allows selecting an appropriate list value from a dropdown list, including matching local variables or script parameters.
- New base lists (boolean, error control type, and widget stack type) and range type (wait duration).
- Modified all enabled fragments so that they use the range types for their parameters whenever possible: amount of energy, selection distance and selection shift, selection quantity, turn speed and angle, head tilt angle, and expansion radius.
- The spell editor now allows selecting an appropriate ranged value (including matching local variables or script parameters) by using a spinner widget. All range types have the step and the precision of 0.1 for now.
Spell editor and MagicScript: other improvements
- Friendly names for variable types: "string" became "text" and "int" became "number". Adjusted the corresponding fragment names.
- Enabled variables and labels.
- Enabled adding parameters to the scripts.
- Enabled math, geometry, and motion fragment categories.
- Variable and parameter names can now include spaces. Custom type names (lists and range types) and labels can include spaces, too.
- Changed the language syntax for variable and parameter declarations, as well as for the labels.
- Split "filter" fragment into two: "filter keep" and "filter remove".
- Changed "constrain ry" fragment to a more generic "constrain" one.
- Replaced numerous specific UI-related fragments by more generic fragments allowing to store UI-related information on the server ("player set text", "player get text", "player set number", "player get number"). These fragments can be used by the menus to store state data on the server. Also added "refresh menu", "menu close", and "menu send update" fragments so that the scripts are able to send partial menu updates and otherwise manipulate the open menus.
- The grimoire menu now keeps the scrolling position in the list of enchantments on the left.
- Added fragment: "is selected id".
Bug fixes
- Fixed: incorrect fireball damage.
- Fixed: an AI issue leading to wolf starvation.
- Fixed: editing variable declarations does not show the minus sign.
- Fixed: editing variable declarations does not show the correct text value.
- Fixed: visual bug when looking at the sky while carrying a block to place.
- Fixed: event triggers not working on unconsious entities.
- Fixed: memory corruption when trying to execute too many commands while sleeping.
- Fixed: showing the inside of the head sometimes.
- Fixed: slightly incorrect texture wrapping for the logs.
Future versions
Interested in the future versions? Remember to visit the Roadmap section.