Development update - February 10, 2024
Added 2024-02-10 18:00:20 +0000 UTCAdded a new type of hint-like objects - "options & prompt"-like ones. These should open the possibility to make branching dialogues in maps as well as allow creation of polls. Prompting could also be used to implement arbitrary input to talk to some kind of AI-powered NPCs, to hide possible options and interpret player's response by key words, or to simply suggest custom response for a map designer to consider.
The poll option could be used to let players playing in cooperative mode vote for decisions players would have made by themselves in single-player playthrough otherwise. Or, to vote for the next map once it is a time for map rotation in DM/TDM/TvT-like modes.
Sounds
- Reworked sound effects for wood (crates) and glass (barrels);
- Slightly changed sound of going from main menu to a new screen.
Gameplay
- Made it so grappling hooks break when arms are broken, not body as it used to be (since grappling hook is not attached to arm);
- Fixed an incorrect particle direction for splashes from underwater explosions;
- Fixed an incorrect orientation of barrel debris due to collision models of debris overlapping;
- Optimized underwater state detection for sounds;
- Increased limit for number of maximum played sounds at the same time, optimized sound playback (different kinds of sounds have different priority, whenever game is out of sound slots it will stop less important sounds like bullet shell collisions);
- Improved reloading animation slightly, so character does not turn his head in sync with a gun when lowering it to reload;
- Fixed a bug causing frozen spots to not spawn from freezing explosions on double-surfaces;
- Fixed a crash related to context restoration issues whenever some objects were calling callbacks via scripting;
- Increased hitpoints influence for arms from 0.7 to 0.8 since it felt like it is pointless to hit character's arms;
- Fixed a crash that would happen on point ping attempt on levels where AI pathfinding was not initiated due to lack of AI-controlled characters;
- Made it possible to make point pings mid-air (though AI characters do not follow these as they aren't valid AI waypoints);
- Replaced basic gradient circle particles with more random shape whenever bullets were losing their power upon contacts with characters, entities and bullets;
- Changed order of particle layers when bullets are hitting characters/walls;
- Fixed improper smoothing near the edges of dynamic glow texture;
- Fixed a bug causing underwater projectile bubbles to not spawn if projectile was spawned underwater and did not cross any water area edge;
- Reworked and made a more optimized version of dynamic glow texture generation;
- Made it so dynamic lights can not illuminate walls from the inside;
- Added a slightly better memory usage optimization for 3D physics engine after too many rigidbodies were created at once;
- Made it so grenades and guns held in arms are ignored for a short period of time right after character releases them, just so they would not be picked up by same player whenever player is trying to throw these grenades/guns in a specific way;
- Fixed a crash whenever entity opacity changes yet at least one of limbs is completely destroyed;
- Configured pickup block timer to make it easier to throw bigger grenades as well.
Interfaces
- Made design template for "options & prompt"-like floating UI objects;
- Added support for "options & prompt"-like floating UI objects (they are also a hint-like objects, which means they can be either float in world or be attached to top/bottom of a screen);
- Made it so "options & prompt"-like floating UI objects are aligned on rigned on the right from previous dialog messages;
- Auto calculation of default duration for timed hint-like objects;
- Fixed an issue causing chat input box selection whenever player cancels input and then tries to return back to typing their chat message;
- Made it so text input caret is not put at the very start of text if chat message input box was canceled and re-activated later;
- Implemented support for outlines for window elements;
- Made it so hint-like objects are moved relative to character's collision box if character is stable, to prevent UI shaking;
- Fixed a bug causing impossibility to open in-game chat input box after hint-like object option was clicked, unless game screen was clicked again.
- Made chat message box window appear more smoothly;
- Made it possible to enter custom prompts in "options & prompt"-like floating UI objects as long as it is allowed for specific object (maybe someone will want to make a map that handles arbitrary input and makes AI respond to them using some of neural network APIs, or just maps that use entered value in some other way like passwords);
- Fixed an issue causing clicks on input fields in chat box and prompt-like floating UI objects to not take offsets into account;
- Added arrow next to prompt input field just in case if someone won't figure out Enter can be pressed;
- Fixed an issue causing outlines to not inherit opacity of their window;
- Fixed a bug causing text to not appear on dynamically created new options;
- Implemented outline reusing for quicker window recreation;
- Implemented polygonal text reusing for quicker window recreation;
- Fixed an issue causing reused polygonal texts to appear black randomly;
- Fixed a bug causing player to occasionally use switches while typing text in prompt field due to focus loss when options are rebuilt in "options & prompt"-like UI objects;
- Made it so input field window changes opacity while disappearing;
- Made a better window modality order system while preventing map-made UI elements from overlapping with Level Editor. This made system clock to not be covered with Level Editor too;
- Reimplemented aim assist for clicking UI elements since previous one was occasionally snapping focus to UI elements that were not even visible and are behind Level Editor's big opaque panels;
- Fixed a bug that was making it possible to click multiple options multiple times if there was no universal function;
- Implemented window destruction for windows that were made with level scripting;
- Fixed an issue causing "Your option" text to float in top left corner of screen due to lack of visibility inheritance;
- Made it so option objects are kept properly within screen bounds as long as they are configured to be kept on screen at all times, fixed an issue causing them to have 0 logical width;
- Made it so right clicks and mouse wheel clicks can reset focus from text input fields;
- Fixed incorrect logical height calculation for "options & prompt"-like UI objects near the top and bottom;
- Fixed an issue causing button with arrow to have wrong position whenever options & prompt"-like UI object is shown on top or at the bottom of the screen (wider version);
- Fixed an issue causing wrong options to have "selected" outlines when changing selected (voted for) option;
- Added rounding for sizes and positions of buttons used for options;
- Added render order reset for reused floating texts to prevent hint-like objects from being drawn over Level Editor;
- Added rounding to color picker, slightly changed its' header;
- Made it so "options & prompt"-like UI objects have their input field instantly focused upon creation if they have no options (assuming this kind of prompts are shown only when player is meant to type something in);
- Made it so new dialogue hint-like objects for removed characters are not made in zero coordinates but instead were inheriting coordinates of other existing hint-like objects related to same character;
- Fixed an issue causing hint and warning hint-like objects to be not properly kept on screen (they acted as if they have 0 width);
- Made it so options hint-like object is moved together with previously made dialogue hint-like object near screen edges while configured to be kept on screen;
- Made it so scroll lists are not scrolling to newly selected element unless it is near edges of currently visible area of scroll list (wasn't really useful to check properties of multiple objects when it constantly scrolls the position of other objects level designer wants to check);
- Made it so options on hint-like objects are picked by pressing number keys;
- Fixed an issue that was causing reused polyon text objects to not update their bounding boxes, thus occasionally disappear near edges of screen for in-world floating hint-like objects;
- Fixed an issue causing dialogue and options hint-like objects to not be put next to each other when they are not configured to be kept on screen;
- Added poll expiration timer that starts once at least one of options has a positive amount of votes;
- Made so "options & prompt"-like UI objects do not have vote dots if hint-like object is not configured to be a poll;
- Added transparency for in-world "options & prompt"-like UI objects that are too far for player to interact with, added text that notifies player about being too far to vote;
- Made it so poll timers are reset whenever last person who voted cancels their vote (number 0 key);
- Fixed a crash that would happen if one hint-like object was created at the same time another hint-like object was removed;
- Fixed an issue causing scroll-lists to be not fully redrawn when they were automatically scrolled due to number of elements being changed in them (for example when new map with less objects is loaded in Level Editor).
Multiplayer
- Made it so "options & prompt"-like UI objects can be used for server polls, added support for vote count reflection next to each option;
- Started re-implementing hint-like message synchronization as part of world snapshots except for text & options since they are too long and server could send these multiple times on first appearance for players with high latency otherwise (since delta-compression is not possible until client confirms first snapshot arrived with new object);
- Fixed an issue causing hint-like objects to appear not on top of their attachment ragdolls;
- Fixed an issue causing lack of ragdoll group for hints due to hints being synced before their attachment ragdolls were synced;
- Fixed an issue causing hint-like objects to spawn in inverse order compared to how they normally spawn in singleplayer;
- Made it hint-like objects do not assume death state of ragdolls, especially since hint-like objects do cause ragdoll sync inheritance but do not cause characters to be synced (thus clients were assuming hint-like objects were made for dead players), instead death state of attachment ragdoll is a separate value synced now;
- Fixed a rare crash thaw was happening on Esc menu closing on client-side;
- Implemented a more reliable way to determine whether windows were made with multiplayer commands and not with core game logic so they can be properly destroyed on level destruction. Fixed a crash on level destruction related to improper window destruction on client-side;
- Made it so in-world hint-like objects are not synced whenever player is blinded (especially important since hint-like objects cause synchronization of ragdolls to which they are attached);
- Made it so in-world hint-like objects that are not kept on screen aren't synchronized if they are outside of specific player's screen bounds;
- Made it so player's registered vote ID if calculated and sent at the time of poll hint-like object snapshot generation;
- Made it so infinite duration of hint-like objects is synced properly;
- Fixed an issue of hint objects being synced in the wrong order in their ragdoll's group by sending index of of each hint-like object in this group and later sorting them on client-side;
- Implemented proper caching of snapshots for hint-like objects, implemented internal callback for object snapshot generation to send text/options data here instead of doing this when snapshot is generated for particular object, since it might never happen for some players if cached version is given;
- Made support for poll mode toggling for synced hint-like objects;
- Fixed an issue causing client's vote to not appear as green on option client has voted for;
- Made it so poll timer is not changing by itself on client-side;
- Made it so clicks on hint-like objects won't work during replays, also removed focusing on hint-like objects with prompt;
- Made it so clients would eventually forget which hint-like objects have what text/options, especially on level destruction;
- Fixed a bug that was causing hint-like objects to have black text instead of expected one on client-side;
- Added access range synchronization for "options & prompt"-like UI objects;
- Implemented "options & prompt"-like UI objects interaction sending from client to server;
- Fixed a bug that was causing votes to disappear on "options & prompt"-like UI objects whenever they were destroyed and re-created on client-side by looking away from them for a short time;
- Implemented synchronization of text/options for hint-like objects;
- Implemented color synchronization for options of "options & prompt"-like UI objects;
- Fixed a bug causing Hound Walker-CS destruction sound spawn briefly in zero coordinates whenever rigidbody it was meant to be attached too was destroyed at the same time Hound Walker-CS was starting its' destruction sequence;
- Optimizations for network snapshot decoding;
- Fixed an issue that was causing differences in breathe and leg phases on server version of character and speculative version of player on client-side, it was causing awkward leg movement, especially in slow-motion when client would constantly try to correct positions of legs and thus make player's walk as if player's legs were glued together;
- Made it so held grenades are moved more correctly in arms of speculative client-side versions of players;
- Fixed a multiplayer bug that would make client stay unable to reconnect to previously joined server because server expected connection restoration rather than a new connection from same client;
- Implemented a visually better grenade holding by client-side version of a player whenever server is running at lower update rate;
- Fixed an issue causing visor breaking sounds to be not played on client-side, especially for characters that aren't currently synced to a client;
- Fixed a bug that was causing crates to often not have debris spawned on client-side and disappearing silently instead.
Level Editor
- Added non-strict check for availability of non-existing properties and non-existing objects (because some objects might not exist at the time of object property editing);
- Optimizations for map error verification for big maps on saving;
- Added support for easier text coloring right in parameters panel via tags (can be used to recolor nicknames of characters as well as recolor text and options in hint-like objects);
- Fixed an issue causing tags to be recognized as color tags yet not having proper colors in them;
- Added drop-down list to specify whether hint-like object should be timed on permanent (cancellable via scripting);
- Implemented scroll smoothing for map structure view;
- Fixed a bug causing map structure view to be not scrolled to selected object whenever level designer selects object that is in collapsed trigger;
- Added line drawing for execution pausing hint objects that connects from previous to next object in structure list (essentially what they are called after and what they will call next);
- Implemented callback functionality for hint-like objects, implemented execution pausing support (when used in triggers);
- Fixed a bug causing lag whenever drop-down list was open in a worlds with big number of objects;
- Made it so quick pick functionality is properly compatible with arbitrary formula text input properties;
- Added possibility to create variables as objects via visual editor without scripting (perhaps they could at very least work as value/object pointer storages?);
- Fixed an issue causing quick pick to not work when map designer picks object from map structure view when editing an arbitrary formula text input property;
- Removed initial smooth scroll animation in drop-down lists opened for parameters panel;
- Fixed an issue causing trigger action to not appear in drop-down lists from imported modules;
- Made it so variable objects can guess their content types automatically based on their value changes and later be properly listed in drop-down lists when editing properties of other objects;
- Implemented scope isolation for variables to be same as trigger they've been created in - this way it could be possible to have few trigger calls each of which will have their own values for variables with same name (for example it possible to reference color or object for later to use these values when spawning dialog messages from this character);
- Disallowed automatic variable hoisting whenever some object tries to reference it, instead error message is shown;
- Made a function that deletes all hint objects associated with specific character;
- Made it possible to create local triggers, ones that do not exist outside of parent triggers' scope;
- Made it so "options & prompt"-like UI objects can accept a callback per each option in simple version, but can also use a universal method to handle each kind of interaction (including calculation of vote strength of each player);
- Added support for modality specification for script-made UI objects;
- Implemented universal function support for "options & prompt"-like UI objects, added support for options changing via scripting;
- Made it so universal function-less "options & prompt"-like UI objects are calling callback trigger with parameters that include things like ID of option and options object (can be used to get text & color of option with specific ID);
- Made it so scripting-made windows can't have higher modality than some of system windows (it is possible to draw windows on top of player HUD though);
- Implemented "keep on screen" property for hint-like objects that are floating in the world;
- Made it so options-like UI objects are using option titles rather than text (which they don't have) when are shown on structure view;
- Made a better blueprint-mode representation for options-like UI objects;
- Fixed a bug causing property to become empty value when clicking on same arbitrary formula input property while there is drop-down list next to it (aim assist would click drop down list at non-existing element position);
- Fixed a crash related to hint deletion in preview mode;
- Made it so hint-like objects can not be clicked when they have almost no opacity yet were already created.
- Implemented in-preview update when editing hint-like objects in Level Editor;
- Made color picker modal and removed the requirement for it to be strictly to the left from Skin Editor/Level Editor;
- Fixed incorrect counting of line breaks in ditto versions of Level Editor objects when they have multi-line text properties;
- Made it so live updating of hint-like objects keeps options if they were made with universal function (so level designer can see their color while changing it, otherwise there can be no options by default if options depend on prompt);
- Made it so options color can be altered on a per hint-like object scale;
- Fixed an issue causing simple object to be passed to hint-like object instead of color object;
- Fixed an issue causing dialog hint-like objects to not accept colors for text recoloring;
- Implemented support for individual button recoloring for options hint-like objects;
- Fixed an issue causing drop-down lists and context menu to appear under code editor parameters;
- Made it so newly made triggers are expanded in map structure view list by default;
- Fixed an improper isolation of object construction error handlers which was causing whole-map errors rather than specific object errors;
- Fixed an issue causing poll state being incorrectly saved in compiled version of hint-like objects;
- Implemented support for implementation of functions for poll vote strength calculation;
- Made access range for in-world "options & prompt"-like UI objects configurable;
- Made it so keep-on-screen option for hint-like objects is not listed for non-in-world hint-like objects;
- Standardized universal methods for "options & prompt"-like UI objects, added protection against impossible action execution by clients on server;
- Fixed crash that would happen whenever character's jetpack style was changed in preview mode;
- Fixed a bug causing imported triggers to be shown in drop-lists of skin and some other object pointer properties;
- Made it so imported triggers that have 0 parameters could be picked as callback targets, though only trigger action objects will be able to pick imported triggers with any number of parameters since they can specify trigger call parameters.
Star Defenders 2D
- Elevator abuse fixes;
- Added admin tool for mass removing, can be used to find out who've made certain objects and mass delete them;
- Admin-level server password specification support & password bypass for admins;
- New rare crystal kinds;
- New octopuses that can swallow players can be damaged from the inside now;
- Color filter inheritance fixes for mimics and illusion makers;
Check more on Github page.
Comments
Very exciting, I interpret what you're saying there could be a financial incentive to make maps - what a joyous way to earn money, if that could be realized :)
Max teabag
2024-02-20 17:51:40 +0000 UTCI have never tried to play Roblox but I do think Roblox is a game that possibly became popular due to world editor flexibility and payment model it has. Would be cool to try something like this for PB3, I do make certain aspects of the game to support such ideas.
UnrealCrash
2024-02-15 13:02:49 +0000 UTCHi Patty, > For Cooperative gameplay will it be possible to give different multiple choices to players and make those options hidden for others visually? > The idea behind this is to essentially have two players get different options for the dialogue options happening. Player 1 may be stuck in a normal conversation but Player 2 could get a choice between 2 responses to change the conversation. > Coming up with a lot of different ideas if this is possible I'm quite excited to give the new dialogue system a go. Yes, there is a visibility parameter for each hint-like object including polls. I still haven't tested it (just made) and not yet exactly sure how to make it easier for non-low-level level designers to configure this easily, but at very least there already is an options to limit access distance for in-world polls. It certainly would be possible to do with level scripting. > I've also noticed in the dev videos that there are plenty of new features within the Editor now. Will there be Editor guides to new features like there were back in PB2? Something for new players and more advanced players to look at to get a rough understanding of how something works? Well, this Level Editor does complain in form of pop-up notes at bottom left corner whenever something isn't being done right, I assume it can be enough to guide player towards how things should be done. I hope to make it so it is almost impossible to break something and not know how to make it work back again. > Not much more to say than that! Keep up the great work always excited to see what you work on every month. Take care! Thank you ^ It has been a lot of work with these options objects and their scripting/synchronizations logic. Hopefully it will be worth it - maybe for campaign but definitely for Multiplayer and custom maps.
UnrealCrash
2024-02-15 12:59:39 +0000 UTCHi Eric, the progress looks fantastic. The game and editor is starting to look like a game engineβ like a 2D version of Roblox or something. Incredibly excited to see how this turns out.
Max teabag
2024-02-14 21:57:19 +0000 UTCHey Eric! I have to say I did not expect you to expand on a feature that is considered already pretty good. Makes me smile seeing the amount of detail you are putting into this game and its features. Love the ability to have multiple choices and voting power. And I can't wait to see what interactions are created by the community once this is released. For Cooperative gameplay will it be possible to give different multiple choices to players and make those options hidden for others visually? The idea behind this is to essentially have two players get different options for the dialogue options happening. Player 1 may be stuck in a normal conversation but Player 2 could get a choice between 2 responses to change the conversation. Coming up with a lot of different ideas if this is possible I'm quite excited to give the new dialogue system a go. I've also noticed in the dev videos that there are plenty of new features within the Editor now. Will there be Editor guides to new features like there were back in PB2? Something for new players and more advanced players to look at to get a rough understanding of how something works? Not much more to say than that! Keep up the great work always excited to see what you work on every month. Take care!
Patty
2024-02-11 16:15:29 +0000 UTC