Development update - April 30, 2022 (Patreon)
Content
I've done more changes since last update. Here is a full list:
Level Editor
- Selected objects can be moved by pressing arrow keys in Level Editor now;
- Added tracking of infinite loops when movables are attached to each other;
- Almost all key presses activate specific tool in Level Editor. Not rebindable so far but maybe support for that could be added later, if anybody would actually use Level Editor that seriously;
- Implemented previewing of built-in and custom skins on property panel;
- Implemented previewing sword styles;
- Added appropriate warnings on attempt to close edited Level Editor world that wasn't saved before;
- Added custom skins as well as custom module/map picker;
- Connected Skin Editor as something that can be open on attempt to edit selected skin right in currently designed level, either built-in or user-made skin. Non-open sourced skins that do not belong to level designer can't be edited this way, though this is probably more of a security through obscurity;
- Added appropriate warning messages regarding need to save newly made skin in order to be used in level (to a separate file within main server's filesystem), added live update;
- In-line pause objects are only when they are affected by time-warp effects now;
- Fixed Level Editor crashes on some common cases;
- Fixed issue causing camera to fly down on Ctrl + S;
- Updated some icons;
- Added possibility to add modules to maps (portions of maps and logic downloaded and inserted into current map, for example module that handles respawn logic, then second module that endlessly spawns random CS enemies while using first module for respawn logic). In addition to all that, hosted server instances are also able to include extra modules, such as one that implements game modes and leaderboard logic;
- Custom modules can be loaded at any time and additionally can be overridden, if they implement logic required for that;
- Added support for triggers to rewrite X and Y (or any else really) properties based off what execute trigger objects (that can pass their position to an executed trigger) have. This way it should be possible to spawn same trigger-related entities in multiple specific parts of map. Considering this could be put into modules - it should be possible to do something like spawn specific enemy with specific weapons and specific custom logic (and maybe even in a vehicle) by editing it in a single module file;
- Added support for list element for property panel. Currently used to add multiple map/modules during import (with add/remove/drag and drop);
- Added spaces to property panel before locking and visibility in Level Editor since they aren't related to properties relevant to gameplay;
- Added selected objects counter (no longer tells kinds of objects);
- Added texture loader object which can load textures that can be later used in surface types (for walls, movables, backgrounds). There is forced preload now so textures won't appear as red squares like they do in PB2. Though there is a possibility to call a trigger on error (same with module loader). Texture loader has option (active by default) to skip manually added textures that are not used by any object in level;
- Added preview for built-in as well as custom textures;
- Fixed logic related to object reordering if highest element was in trigger group (was causing errors if trigger group was not executed instantly on level start);
- Opacity and transparency can be enabled for surface textures now (transparent objects are handled differently in OpenGL).
Game
- Texture scale and offsets for surfaces added;
- Fixed time-scale inaccuracy related to fast projectiles entering time warp areas - previously railguns could travel at wrong time scale for a distance up to few meters. Now amount of sub-steps increases whenever projectiles appear near time warp areas;
- Pixel variants of surface textures are possible now;
- Added disposing of old textures on level change.
Multiplayer
- Fixed network issues related to groups of movables + backgrounds attached together and using different surface types;
- Fixed issue causing decals to reappear for new server instance and after map change;
- Added support of custom skin sync in Multiplayer mode;
- Fixed bugs related to explosions not being disposed properly on render-less servers;
- Added possibility for server to tell which textures should be preloaded (since clients do not receive original full level source, just stuff that was made in result of level logic ran on server, which in addition to that can be private);
- Improved inter/extra-polation for Multiplayer and especially for cases when server has lower update rates (either due to unusual performance lag or due to settings). It seems like even 100ms works acceptably (usually it send updates each 4ms), especially since server will still send event-related messages instantly (such as particle spawns);
- Tested cases of unreliable update rates and adjusted speculative player input actions before server-side correction kicks in (reload start, shooting, etc.);
- Removed speculative collision simulation for ragdolls and grenades if grenades are pickup-able (was causing unneeded shakiness in Multiplayer);
- Fixed issue where all visible beams were teleported to player's beam weapon when it was fired;
- Fixed crash related to reconnect attempt since preferred skin info (which user can pick in Settings) wasn't given to server. Was happening on attempt to connect to server by double-clicking same server;
Interfaces
- Increased clickable areas of most interface buttons (if user clicks between two closely placed buttons - he will hit the closest one). Not sure if it is needed to PC/Mac (yet it still feels easier to press stuff now) but I assume touch (iOS/Android?) users will need it since such approach is common there;
- Added support for system cursor, though it is optional. By default it is only for Level Editor/Skin Editor since these don't really need dynamic cursor and can benefit from more relevant cursor movement. Unlike in PB2 (where system cursor is a pointer), PB2.5/3 system cursor does look like a team-colored static railgun-like crosshair during regular gameplay.
File browser
- Added recently used folders for file browser. It will also remember last folder location so picking multiple skins or map/modules from certain folder would be easier. Also fixed plenty of bugs related to not knowing folder structure back to the root (moving/removing nested folders will still cause patch to be unknown but won't really break anything).
Interface
- Interface fixes related to property panel values editing, Tab key to activate next property;
- Fixed scrollbar color issue for empty lists.