Home Artists Posts Import Register

Downloads

Content

Today's development update video does include new grappling hook and various network connection simulations with on-screen keyboard info to notice latency easier. 

On-screen keyboard could be used to simulate quite non-standard keyboard & mice controls on tablets in future (something very similar to how it is done in Star Defenders 2D. Has anyone checked that on tablets/phones already by the way?).

I have a feeling today's video clips were recorded with my system's equalizer settings. If something feels off about sound - it could be because of that. It actually starts to worry me that I might be hearing game not in a same way everyone else does - I have tested sounds under different headphones and in each case nothing sounds the same. In theory though, all this could be solved with some sort of global EQ effect later.


Multiplayer

- Fixed a bug causing slowly sliding ragdolls to not be visually updated on client-side due to physically sleeping;

- Implemented rotation sync for "T" entity;

- Fixed a bug in speculative projection & collision logic for time nudge that was causing shaking for characters idling on sloped surfaces;

- Improved speculative sliding for time nudge;

- Fixed an issue causing sniper rifle and low ammo warning sounds to not work on client-side;

- Fixed an issue causing "cloud" projectiles to not have shrink effect early when client's interpolation is disabled;

- Fixed an issue causing frozen spots to not be seen due to particle shader error on client-side;

- Fixed a strange offset for bullet holes on 3D entities due to lack of matrix update whenever entity gets synchronized to client for the first time;

- Fixed an issue causing bullet holes on characters facing left direction to be flipped;

- Implemented synchronization for ambient sounds such as antigravity hums (especially needed because otherwise humming would instantly stop and resume the moment antigravity field appears on screen or no longer seen within screen bounds);

- Fixed a bug causing incorrect detection of data resent attempts during attempt to reorder event packets that either come out of order or some packets are missing on receiving side (essentially event resend logic was not working most of the time);

- Decreased status messages array size down to 1 status message since any other messages are never really used for delta-compression (some memory saving);

- Added icon over lagging players in multiplayer (red triangle with exclamation sign, can be seen in the video clips about 90% packet loss);

- Fixed an issue causing "in lag" and "is chatting" icons to not be removed whenever player's control was redirected to another character;

- Fixed a bug that was letting clients crash servers by sending truncated status message;

- Decreased amount of data client sends to server on each tick;

- Made it so "is chatting" and "is in menu" icons do block movement and attacks of a player who is afk (so we won't have players who will distractingly blink with them while fighting using some sort of possible cheats). Such block duration is around 300 ms;

- Fixed a bug causing ambient loop sounds to be occasionally muted in replay mode and especially in replay mode while in slow-motion;

- Entity scale is now synced;

- Fixed a bug causing bullet holes to be moved to strange offsets on 3D entity flip;

- Fixed a bug causing bullet holes to appear in wrong places on 3D entities if entity was not seen at the moment of hit;

- Fixed an issue causing bounding boxes for visibility of complex entities to be built while excluding some parts;

- Fixed an issue causing bullet holes to scale with scaled characters solely in multiplayer;

- Optimized wall lookup for wall referencing that would become too slow on complex maps;

- Optimized number of simulated interpolation states per each object that would often increase because of lag spikes and stay like this while causing performance degradation for client;

- Fixed crash due to removed walls being referenced during world snapshot decoding on client-side;

- Optimized number of walls participating in collision prediction for time nudge logic down to solely ones that can be seen on screen by client;

- Fixed an issue causing invisible blood particles to play collision sound (they are invisible if they were spawned when player sees them for the first time but did not see them at the moment of spawn);

- Fixed a bug in trusted controls mode (when server moves character exactly where client wants it to be, kind of allows cheating but can help with client's connection issues) that would occasionally teleport character to where character is according to server;

- Fixed an issue causing too smooth and slow interpolation for objects when server is sending world snapshots at a very low rate.


Gameplay

- Fixed an issue causing new "T" entity to play high pitch sound on flip. One of "T" entity parts had incorrect flip logic;

- Made it so "whoosh" sound is not played if player throws grenade without throwing it (holds the grab key during throw);

- Fixed a case that could make player to be frozen forever when specific new weapon was used on him in addition to freezing;

- Fixed a bug causing "beam" projectiles to not deal damage to players standing on parts of "T" entity that have projectile ignorance logic yet projectile protection with same part logic was still being triggered;

- Made it so freezing explosion can create frozen spots on movable walls;

- Fixed incorrect frozen spot spawn tracing for freezing explosions;

- Fixed an issue causing freezing explosions to not scan entities for freezing properly;

- Reworked freezing explosions frozen spot spawn to be done with radial raycast in 9 different directions;

- Fixed a crash as a result of object removal whenever player stands on top of it;

- Fixed an issue causing fire to not have decreased duration whenever there is a custom-shaped wall right on top of it;

- Fixed an issue causing players to explode on attempt to teleport outside of Hound Walker-CS they drive using teleport grenade;

- Fixed an issue causing explosions to damage walls through other walls;

- Fixed an issue causing frozen "C" entity to lose visuals of being frozen if one of parts gets broken;

- Made it so holes aren't scaling with entity scale;

- Fixed a bug that was making stuck projectiles appear smaller than they were initially;

- Fixed an issue that would spawn bleeding points with improper offset on scaled entities;

- Made jetpack activation a bit more reliable when player slightly jumps into air due to previously going up the slope;

- Made it so holding jump key and X key at the same time but releasing X key while still holding the jump key is considered jetpack activation attempt;

- Made it so players can't flood with jetpack start/stop activation sounds too much;

- Fixed an issue causing Hound Walker-CS to have invisible turrets after destruction that would prevent it from despawning completely if Hound Walker-CS had never any weapon installed into it with Level Logic;

- Made it so characters pull gun closer to their body if they are about to hit entities (and ruin accuracy);

- Made it so dust is not spawned under "T" entity when it is idling;

- Made it so "T" entity can enter sleep mode to save on calculations;

- Made it so held guns and grenades can be teleported whenever teleport grenades are used (perhaps could be useful to teleport ragdolls at some point too, but it is not implemented yet);

- Made it so crew characters leaving "T" entity at the same time won't start damaging each other due to being moved into the same spot;

- Implemented partial spawn of "T" entity parts;

- Added support for entity missing parts restoration if they were broken or were not spawned;

- Bug fixes and more improvements for "T" entity's new logic;

- Fixed an issue causing entities with restored parts to fall off of entity after flip;

- Fixed an issue causing restored parts to have wrong orientation on restored parts;

- Fixed an issue preventing proper part restoration for "T" entity due to destruction logic;

- Fixed an issue causing part duplication on part restoration for entities;

- Fixed a bullet hole issue that was causing sprite mask to not work when character is facing left direction;

- Fixed an issue causing improper offset of broken spine sprite of up-scaled characters;

- Fixed an issue causing up-scaled characters to hold their arms up while weapon slot 0 is activate;

- Made it so ledge climbing for up-scaled characters is more reliable;

- Made some parts of "T" entity to not collide with the parts of same entity type;

- Fixed an improper z-offset for parts of "T" entity when spawned with Level Editor rather than through Multiplayer snapshot decoding;

- Added regular rope kind of hook - perhaps could later be used for something;

- Fixed a crash that would happen if player was holding space key while his character was being deleted but ragdoll was kept (non-revivable character);

- Made a grappling hook that can be used to manipulate physical objects;

- Added animations to physics hook;

- Added dynamic lights for physics hook;

- Added spin limitation of physics hook's end;

- Fixed a bug causing mass calculation (for reverse push force) for connected entities to which physics hook is attached to to include players standing on the walls;

- Made it so physics hook isn't being thrown unlike regular grappling hooks;

- Made extra version of physics hook that doesn't react to damage, has minimal influence on player unless it is attached to a wall or movable and has unlimited pull force - could be used as some kind of admin tool and for tests. Has a slightly different color;

- Made it impossible to restore missing parts of "T" entity variants that are missing parts on their own to save on calculations;

- Fixed an issue causing explosion sprite to be never generated if explosion happened slightly offscreen. It wasn't working too accurately for larger explosions and especially if player happens to move camera quickly towards the source of explosion after it was made;

- Increased maximum number of allowed bullet holes on "T" entity, made this logic alterable on per-entity basis;

- Made it so liquid particles can play impact sound (as seen on video);

- Implemented lightmap texture morphing for "T" entity;

- Added lightmap update for "T" entity that depends on count of total parts and total of connected parts for each part;

- Implemented optional 3D model swapping for restored entity limbs (two entities can essentially merge into one);

- Fixed an issue causing lightmap morphing to be not inherited on broken "T" entity parts;

- Disabled alpha test cache for 3D model-based entity parts to speed up first construction.


Interfaces

- Made it so main menu background is following cursor position on screen slightly;

- Disallowed menu opening during level loading with Esc key;

- Fixed an issue causing main menu to not have animation until first click if synchronization did not happen in time;

- Fixed an issue causing inconsistent interface sound stereo balance on some devices when camera was far from zero coordinates;

- Improvements to Creations browser interface;

- Improvements to progress bars for Settings-like screens;

- Optimizations for game updating & level loading screen;

- Fixed a global font rasterization error that caused certain characters like lowercase letter "b" to have clamp effect on the left whenever character was built as polygon text;

- Loading screen image corrections;

- Fixed an issue causing crosshair to not represent speculative character's aiming and his current weapon which caused crosshair to appear delayed in case of high latency;

- Fixed an issue causing ammo HUD to not represent speculative character's aiming and his current weapon when there is one;

- Added virtual keyboard of some sorts. So far it just shows held keys, but in theory it can be used to provide UI if game will be optimized to run on tablets or other sensor devices.


Level Editor

- Fixed incorrect syntax highlighting in code editor;

- Fixed a bug causing connections between characters and their skins to be shown because of caching during level loading that was missing yet to be spawned objects;

- Fixed a crash when wall was being created in preview mode and had zero height;

- Made it so surfaces are rebuilt when shape is converted into region;

- Fixed an issue whenever missing global method was not loaded from any imported module but wasn't giving any visual error in Level Editor either;

- Made it so exiting to main menu from previewed map is warning about unsaved changes in Level Editor if there are any;

- Fixed incorrect source Creation ID detection of imported files in order to form a proper "on behalf of" Creation ID specification in request (grants access to skin that is not available to player but is available to map designer and aforementioned map is available to player);

- Made it less trivial to copy skin sources by having access to a map that references skin to which user who views map's source has no access to;

- Added padding for some of UI switches;

- Made it so newly created guns (and other objects) are assigned preview model when preview mode is enabled (probably broke after undo optimization that prevented call of the movement event until object was dragged by zero distance);

- Made it so pasted entities are centered by their bounding box rather than logical center;

- Fixed a crash from pasting an entity that never had bounding box calculated;

- Added an option for water classes to force drawing the background extension layer on top of foliage and natural textures as it happened to not always be very reliable;

- Fixed a crash that would happen when environment generation was enabled but nothing was creating foliage.


Server

- Fixed a bug that was allowing "on behalf of" logic to work even when reference source's owner did not have access to referenced Creation.


Sounds

- Decreased amount of bass in explosion sounds;

- Made one new sound for "T" entity;

- Made 4 sounds for physics hook;

- Made liquid drop sound;

- Updated barrel break sound.

Comments

Anonymous

any news on campaign yet?

UnrealCrash

Just updates to "T" entity that should be in few missions of campaign so far. Currently I'm adding entities that can be later used in campaign levels.

Anonymous

Very epic stuff ! Seeing all the possibilities is just awesome. The sound sounds very cool and detailed and I can tell you are spending a lot of time into and getting everything almost perfect if not perfect lol https://i.imgur.com/UmdzaU6.png would there be a reflection in the future off the water? Are you able to manipulate the water to be in the background too, so say it could waterfall into the pool (just a thought) does the room get darker than that, like could it reach absolute darkness?

UnrealCrash

https://imgur.com/a/k3TCM2B There is reflection, it is just gets rarely seen since water does not extend too close to the camera. But I do think of making it possible to somehow extend water not only backwards/left/right but towards the camera as well. Waterfall might be just a matter of making an infinite particle spawning object. Should not be hard to add, but I do wonder if it needs to be somehow prepared to be dynamically created with level logic for various game modes. This does seemingly bring a lot of creative opportunities once it is implemented. I noted it in to-do list but might delay it if gets too complicated, especially the sync and scripting part. Room can reach absolute darkness: https://imgur.com/CXib1KT

Anonymous

Very cool update Eric :D Have you ever watched those game dev youtubers that post their game dev log? Seeing you handling the different edge cases when it comes to networking is pretty interesting (at least for a programming nerd like me :D) and I was wondering maybe you can similar - showing and explaining to us your though process and workflow when developing PB3 and all of us can learn from a thing or two! Could be an awesome pre-hype build up to the eventual game release too :)

UnrealCrash

Honestly, I'd like to try something like that one day. Would have been cool to improve my English too. But then, I feel like a lot can be said about person's thoughts by the way and what they are talking about - would not be too comfortable doing any sort of voice reveal before PB3 release, partially because of that. Another is I probably don't know many developers who can maintain big projects and make videos at the same time. But videos are definitely helping make games popular as well as making it easy to get other YouTube creators to engage in game testing/playing.

Anonymous

there's always the option to use AI voice too if you're not comfortable haha :) game looks awesome :D

Anonymous

Hey Eric! Late message here i've had Covid for a few days. Was unable to sit down and write this without getting worse. Grappling Hook looks amazing. From what you said it's only for Admin usage? Guess that makes sense considering it connects to air. I'm assuming there is a version of it that can be used by normal players as well? One that connects onto ledges or walls like a normal grappling hook? Glad to see that even with high ping you were still able to play with small delays. Said it before but already 10 times better than what pb2 was. Honestly quite surprised to see how well it runs above 150 ping. Quite promising! Keep up the great work Eric!

UnrealCrash

> Hey Eric! Late message here i've had Covid for a few days. Was unable to sit down and write this without getting worse. Oh, I know this feeling. I have had to go through the same about a few years ago. I wish you to recover with as few as possible side effects. Keep consulting doctor too as some side effects of it can be both critical and invisible. > Grappling Hook looks amazing. From what you said it's only for Admin usage? Guess that makes sense considering it connects to air. There are two versions, the showcased one might end up as replacement for cinetic module. Admin one looks very similar but can't be broken from damage and does not affect this hook's owner as much. Meaning one can't lift vehicles and another one can, for example. > I'm assuming there is a version of it that can be used by normal players as well? One that connects onto ledges or walls like a normal grappling hook? Yes, specifically the one showcased is the one. Admin hook has green color to it. > Glad to see that even with high ping you were still able to play with small delays. Said it before but already 10 times better than what pb2 was. > Honestly quite surprised to see how well it runs above 150 ping. Quite promising! Just implemented key press event counter table synchronization and it works even better with 90% of packet loss now ^ Was a bit surprised it would actually have such big impact on that. Likely because packet loss was causing key states to go out of sync with old key press events model and as a result some keys would seem to be pressed multiple times. Also, active weapon mispredictions are no longer happening too, which is also great. > Keep up the great work Eric! Thank you and hope you'll get well very soon.

Anonymous

Grappling hook looks very cool and fun to use, almost like ODM gear from AOT :) The game accommodated high ping much better than I expected, maybe because of the lag compensation or speculative projectiles from client-side to server-side. I wonder what is time nudge compensation and what it does for gameplay? Same for interpolation, it seems to me interaction is the same between 150ms both enabled vs both disabled. Overall loving the work you're putting in to make the online experience better for everyone. Looking forward to the next post!

Anonymous

So when can we play PB2.5? I can't wait!

UnrealCrash

I can see the energy hook reminding people of very different games and shows :] I have never started watching Attack on Titan but heard a lot of recommendation even including one of artists who have been helping me with PB2 past and does help with PB3 occasionally. I could probably say that I like slice of life-kinds of anime a bit more than adventure/story ones, for some reason. At least when I'm not actively looking for inspiration sources which I think I do quite rarely these days. Time nudge moves all objects (on a screen of a player who is connected to a server) towards their velocity multiplied by 2 * ping value. This way, for example, grenade that moves with certain velocity midair would be in the exact position where player's shoot attempt would arrive to the server. Which essentially makes aiming at small flying objects (though it is also applied to player, entity and movable positions) as close as aiming at them in a singleplayer while making it feel less ping-dependent. PB3 might drop favor the shooter model which PB2 (new netcode) as well as many modern first-person view games use because I don't really want the situations in the game when player who is pushing the retreating player can see and hit the retreating player while retreating player can't see the pushing player nor hit them. Essentially a common case which you can notice when 2 players are going around the the corner in same direction. Only drawback is that low ping players would have an advantage over high ping players but at least game server won't have to wait for time-traveling hit events from high ping player in order to confirm low ping player's hits, especially since there is a possibility of faking the ping. Should be much more fair basically. Interpolation is just smoothing the positions of objects by morphing from one packet data to another packet data. For example in Packet#0 grenade has X position of 0 and in Packet#1 it has position of 10 - in this case game will show the smoothed movement of this grenade from 0 to 10 gradually. Though it also takes into account the velocity of this grenade and smoothes it as well while still adding velocity of each packet's data to packet's position. Very complex thing I guess but will hide stuttering, especially on low packet rates from server. Or again if portion of packets are being lost somewhere on the way to connected player. I believe disabling speculative stuff just makes player's input delayed, you should be able to notice it on the video. It feels wrong playing like this in multiplayer after playing singleplayer. But I guess I'll leave this as option since it turns off a plenty of prediction that might fail occasionally in critical cases for someone. Thank you for questions ^^ I've been really trying to improve network experience which also includes not syncing off-screen objects and obfuscation of object IDs in network snapshot (so packet scanning would not be used to predict if enemy team has thrown a new grenade or shot anything by looking at unique numbers of networkly synced items - object IDs are assigned randomly from the pool of about 100 random IDs every time there are too few available).

UnrealCrash

Still can't tell unfortunately. I do try to work on entities that will be used in story mode for Plazma Burst 3. Once I'm done here there will be levels and maybe voice acting later on. Story itself and level ideas are already written. Most part of it was made before Plazma Burst 2 release though I did change it a bit since then to make it feel much more modern and relevant.

Anonymous

Very informative, thank you for explaining, these are clever ways to sync input from both client and server. I wouldn't mind learning more about this. Might as well bump some anime to watch if you're interested. Can't say the following anime are from the 'slice-of-life' genre, but they are worth looking into: Inuyashiki, Erased, Monster, Blue Lock, Vinland Saga, or Chainsaw Man. Probably aren't the most realistic anime but each tell a good story.