No Heroes – Development Blog #7

Welcome back to a new development blog!

Gameplay Improvements

This week i got a lot of feedback after testing No Heroes with a few more people.

For starters, i was able to remove any signs of mouse smoothing that there was in the player input. This was caused by how the system was setup with the networking middleware i’m using.

Now, the player input is very responsive and much better to control.

In addition, i also improved aiming down sights speed and movement consistency.

Game Options

I also added two options for mouse sensitivity and aiming sensitivity. These options are now in the same menu as the video options, but will later be put into another menu.

options

I also made a second pass at the graphics options and post processing settings, and updated what each option affects and how the option affects it. The game is now more consistent and performs better with lower graphic settings than before.

Sound and Visual Effects

Improved the footstep system by being able to play more sounds per surface. Every surface also received completely new sounds, about 5 new sounds per surface.

I also improved all firing effects, hitmarks effects and sounds of weapons, which can be seen in the video in the next section.

Improved Body Awareness

To add more realism, the character no longer rotates under their feet. Instead, the feet stay in the same position until the player rotates enough, that an animation is triggered and moves the feet to their original place.

This makes the full body awareness feel more immersive:

Lighting Improvements

To better improve the visuals, i spent some time tweaking the lighting and tonemapping by better using HDR. Now the colors and light feel much more consistent, and the transition between light and shadow look much better.

light2

Terrain and Foliage Improvements

I also tried some new techniques to better improve the overall terrain on slopes and some parts of the map that looked ugly.

More types of grass, new rocks and new plants were added to the map.

This slideshow requires JavaScript.

I also made a timelapse gif of the day/night cycle, which can be seen in this tweet:

Performance Improvement

Made a new pass on assets and map performance by reducing some textures resolution where the change has insignificant visual results, but saves on VRAM usage. Plus, i reduced many spec/metallic texture resolution, since these are really not noticeable. With this, i saved around 50-100 MB of VRAM and saved some milliseconds.

Improved SpeedTree performance by unchecking some costly properties and improving their LODs distances.

Some player algorithms were also improved, along with more intelligent remote networking updates and client-side prediction corrections.

Noticed around 20FPS improvement on my machine with these changes. There are still a lot of places to improve performance that will be worked on next.

Enemy

The remote player was also improved, with smoother movement, more consistent events (vaulting, climbing) and the same lower body mechanism described earlier.

Now, when a player kills another one, their weapon also drops to the floor and can be picked up by other players.

Misc

As miscellaneous updates, i spent some time re-organizing the project folder with a more practical hierarchy, and also removed many unused assets to decrease project size.

Since i have have the server play in a window, i had to set it up in a way that it doesn’t consume many resources, so i improved the server performance a lot by reducing plenty of unneeded computations, graphics, frame-rate, and more. It’s now very light in comparison to what it was before.

And, as always, many bugs were fixed, but probably many are still hidden in between the cracks of the code.

Plans for Future Updates

To end this development blog, here’s what i will be working on for the next development blogs before the Development Update #46:

  • Fix persistent client-side prediction inconsistency
  • Improve general gun feel and control
  • Improve map and art assets performance
  • Improve costly algorithms performance
  • More consistent visual looks

 

Well, this was a big development blog 🙂

Thanks for reading and for the amazing support!

Tiago

No Heroes – Development Blog #6

1untitled

Lag Compensated Hit Detection

Starting this blog with something major, i added lag compensated hit detection on the server.

This makes it possible for when players hit a player or some other thing, that action is also correctly performed on the authoritative server.

To easily test this, i implemented a target system where the target moves in a line back and forward in a similar way the player movement works. This allows for accurate hit detection testing.

To see if everything works, when the target gets hit on the server, the red light turns on and it rotates backwards. If it’s hit on the client, the green light turns on, but doesn’t rotate backwards.

Here’s a simple video demonstration of this in action:

You can see that without lag compensation, if the player hits the end of the target, in the opposite motion, the hit never happens on the server. And if the player shoots in front of the target in motion, the hit happens on the server.

Aiming Down Sights Consistency

This time i also fixed the problems about the aiming down sights. For some reason it was behaving frame-rate dependent, even though its algorithm wasn’t frame-rate dependent.

I was able to fix this issue, plus the smoothness of turning it on and off. One other issue i was having with this, was that with long-range scopes, the scopes were stuttering when the player moved or rotated.

Now all these issues are fixed and working properly. You can see this in the video above.

Deferred Projected Decals

This was actually partially added in the last blog (which i forgot to include), but now, i added more types of these decals to the bullet holes with better lighting, and decals around the map.

2untitled

Game

Two more things were fixed/added to the game.

Now, at the end of the game, the match winner is displayed, and i also improved the spawning system of Deathmatch game mode by choosing the spawnpoint that has the biggest average distance to all the enemies.

This works pretty well for deathmatch.

Trello and Development Update #46 Planning

A couple of weeks ago, i announced that i defined the last ToDo tasks that need to be done before the next Video Development Update #46.

https://trello.com/b/mcKE6OVj/no-heroes-game-development-drunken-lizard-games

I had to add just a couple of important new ones, which were already completed.

I also updated the whole Trello board with a more organized look. Now it’s much easier to see the tasks , and which ones are the priority.

untitled2

That’s it for this development blog!

Thanks for reading and for the amazing support!

Tiago

No Heroes – Development Blog #5

Welcome to the new Development Blog #5!

I’m going to make this update a bit short so i don’t spoil too much for the upcoming Development Update #46 (No ETA though)

Authoritative Movement

So, i thought i got this fixed, but turned out it wasn’t. It was working properly, but when i tried debugging the movement with induced lag, it started behaving very weirdly. Moving, jumping, falling were full of micro stutters, vaulting and climbing were not behaving correctly, and so on.

As everyone that works with networking will say, networking problems are the worst.

With that, i was able to fix the issue, and now the player controller is very smooth and better than before.

Now, all testing is done with induced lag, so i can test how the game plays in reality.

Props, Props and more Props

For this update, i decided to replace a lot of the old objects i was using in the map with new and better quality objects. In total, there were more than 30 new objects that were added.

I used Blender for 3D modelling, and Substance Painter 2 for textures.

Map Improvement

With these new props, the map now looks and feels much better and detailed. You can compare these images with ones from previous blogs, and you’ll see a very big difference in quality.

Here are a few screenshots:

Cloth Physics

If you follow me on Twitter ( @Tiago11F ), you might see some posts that i make showing new things in the game. These are usually small stuff, so i just post these on my Twitter page instead of other platforms.

Here’s a preview of the improved wind shader:

And here, i show a simple way of creating cloth objects:

Editor Smart Placement Tool

I also made a new tool that greatly improved item placement. This tool projects each individual part of a single mesh onto the terrain, so nothing is left in the air or inside the ground.

First Person View 2.1

Regarding the next version of FPV2, i fixed some inconsistencies with first person shadows, and also fixed the weird things that i was getting with this setup on the editor scene camera and other cameras.

This new update is still work in progress, so i don’t have an ETA for it yet.

Development Update #46

With all these updates, i should probably talk a bit about the next video development update.

Things are progressing well, and i feel like the next update is almost on the way.

I wanted this update to feel like a new game and feel a lot different in comparison with Update #44. There’s been so much work done that it really does feel like a new game.

You can see how No Heroes was back then:

(Very different! and not just the looks.)

I was thinking of making a small video for this Development Blog to show the improved character movement, animations, sounds, map, etc, but i decided not to spoil too much until the next update, so it can feel fresh.

 

That’s it for this development blog. A lot more work has been done on other things, but don’t feel like those should be included in these blogs.

Thanks for reading and for your awesome support!

Tiago

No Heroes – Development Blog #4

Welcome back to a new development blog of No Heroes!

First Person View 2.1 Preview

Starting things off with First Person View, i decided to figure out how to fix the shadowing issues and lighting due to how this system works (very short z-buffer for first person objects with custom projection matrix (independent FOV)). Because of that, shadows were almost an on/off effect, and lighting was also on/off.

I was able to improve this, and give real depth to the player character. There are still some things that need to be improved and optimized for easier setup, but it’s looking much better as you can see in the following screenshots (light is exaggerated on purpose for easier shadowing visualization):



Remember, first person objects don’t clip through the environment and have a separate field of view, much like any modern shooter. This allows changing the field of view without distorting the player models. To my knowledge, i haven’t seen this achieved in any Unity made game yet.

I was also able to add player shadows onto the environment, making the player feel a part of the world:

Improved Terrain

Jumping onto the terrain, i switched a few textures to new ones that give a much better quality to the terrain. The new grass and dirt textures make the grass feel like it’s part of the terrain.

Overall quality also increased, with higher resolution textures and new speedtrees placed on the environment.



Game and Controller Predicted Movement

One thing i noticed when testing the game, was that the movement wasn’t always fluid. This was due to the movement and smoothing being made on the fixed-update methods (constant slower frame-rate), due to the networked controller predicted movement. Now, a smoothing algorithm is performed on the Update method, that smooths out the players movement in relation to the actual frame-rate of the game, making everything feel much smoother.

Until this update, when a player died, the ragdoll would remain in the game until the end. Now, each client is allowed only one ragdoll during the game.

Wind Shader Experiment

Just yesterday, i was messing around the environment, and one thing i noticed the most was that, except for the grass and trees, it was too static.

Using the asset ShaderForge, i made a shader that simulates low level wind on the objects. The effect runs on the GPU, so it’s not very expensive. It still has some improvements to give a more natural wind effect, but by adding wind effects to certain objects on the environment will make it feels much more real.

This effect already has the option for exclusion mask, wind texture, wind speed and deformation amount.

Sounds

Last but not least, i was able to improve certain sounds in the game.

I added the ability to have more than one footstep sound per surface and fixed the loud noises it was causing.

New footstep sounds were also added, plus new gun sounds for firing and handling it. At the moment only the pistol has new sounds, but more will be added to other guns.

Unity 5.5

In addition, I ugraded the Unity version to their latest Unity 5.5. Performance improvements and general looks improved by making this update.

Many other things were worked on, like improved networking performance, bug fixing, player movement, classes structures, textures, and more.

_____

Well, that’s it for this development blog.

Thanks for reading it and hope you’re liking the progress!

Don’t forget that you can see what is being worked on No Heroes and what’s left to do on the official Trello board: https://trello.com/b/mcKE6OVj/no-heroes-game-development-drunken-lizard-games

Also, take into account that this is a hobby project of mine, and i don’t work full-time on it, so it’s not unusual for updates to take some time.

Thanks again!

Tiago

No Heroes – Development Blog #3

Welcome back to a new development blog!

3

First of all, this blog was delayed a couple of weeks because i had to prepare and defend my masters thesis, which i passed 🙂 . Because of that, i wasn’t able to spend much time on the game and make a development blog.

With that done, here’s what has been worked on No Heroes since last development blog!

For this weeks blog, i focused on two things: Improving the map and fixing an important issue with slow player spawning.

Map and Visuals

Starting with the map and visuals, as you remember from some old images and from last blog, there were some odd and ugly buildings in this section of the map. To improve it, i made a few new ones with better materials.

4

vlcsnap-2016-11-22-15h04m16s015

New objects, small walls, grass, and trees were placed around the map.

Faster Player Spawning

This was one tough thing to fix.

The spawning of a new player, with weapons, attachments, animations, etc, was so heavy that there was a close to 1 second lag when a new player spawned.

I was able to decrease that cost to something that isn’t noticeable, which is fantastic, but will still need to be reduced even more.

Might not seem like a big deal, spawning a player, but with all the systems implemented in the game, it is proving to be a more difficult task than previously thought.

Dynamic Movement

The dynamic movement of the weapon was also changed. It wasn’t very natural, and was hard to aim when rotating the player around.

So, my goal was to make a better dynamic movement with fluid and consistent movement. The following video compares the old with the new (wip):

Out of Bounds

A very straight forward thing that exists in every game is the out of bounds. Like was explained in last blog, an out of bounds effect was implemented, and now the server actually kills the player after a few seconds of being out of the game zone.

Game Consistency

Making everything consistent in a multiplayer game is probably the most difficult thing to achieve.

For this development blog, i also spent a lot of time trying to make the game more consistent, like gamemode setup, destruction state synchronization, weapon/attachment assignment, bug fixes, etc.

#MadeWithUnity

It’s still awaiting approval, but No Heroes will soon be up on the MadeWithUnity official page! It will be a huge honor to have No Heroes next to all the awesome games made with Unity 🙂

You will be able to access the page through the following link when it’s approved: #MadeWithUnity No Heroes

 

 

That’s it for this development blog!

Thanks for reading and for the support!

Tiago

No Heroes – Development Blog #2

Hello everyone!

A lot of things have been done and improved since last blog. From better AI that shoots at players to optimized and consistent player spawning, initial work on screen-space health effects, improved visuals and details on the environment and a lot more!

Screen-Space health effect and hit feedback

Until now, there was no visual feedback that a player has been hit, so i implemented a few effects based on the health the player has and if the player has been hit by a bullet.

The effect based on the health changes the screen to black and white and the corners of the screen imitate an heart beat indicating the player is low on health.

The hit feedback can also be seen on the video, where the gun flicks when the player is hit.

One thing i didn’t include in the video is the out of borders effect. It gradually increases the bloom effect and adds a grain effect to indicate the player is out of bounds of the play area.

AI Players

Last blog i implemented AI controllers, but they only walked around the map doing nothing.

This time, the AI players can walk/run around the map, and if they spot a player, they will shoot at them. To be able to easily test things, i made them shoot only once a second. That way i can see if everything is working right. The whole AI controller is also more consistent than before.

The AI can be seen in the video above.

Visuals

Before making the next video update of No Heroes, i also wanted to improve the visuals, 3D objects, textures and a few other things. Not too much but enough to look much better.

For the sky system, i’m using uSky. It gives very high quality results with really good performance. Day and night got a lot better.

I also modified many colors, mainly on the terrain, but also on a few models. Added more details like small/big rocks, trees, and others.

The grass was also pretty bad looking, so i decided to improve it. Watched a few videos to see how to do better grass, and tried out a few things. I was able to greatly improve the quality of the terrain by modifying the grass as it can be seen in the images below.

Before

After


One other thing that impacted the visuals quite a lot was cloud shadows. By adding a cloud texture to the directional light cookie slot, it simulates cloud shadows. it’s not entirely correct with the sky, but it’s not very noticeable.

No Cloud Shadows

With Cloud Shadows

And that’s it for the second development blog.

There were a lot of other things worked on like behind the scenes stuff, consistency issues resolved, performance optimizations, new 3D objects, textures, etc.

Thanks for reading and thanks for the support!

Tiago

No Heroes – Development Blog #1

Hello everyone,

This is the first development blog of No Heroes. In these blogs, i share the development updates made to the game.

By following the Game Development Trello Board for No Heroes, you can see what’s been worked on and what’s left until the Early Access release:  https://trello.com/b/mcKE6OVj/no-heroes-game-development-drunken-lizard-games

As high priority, i’m working on the most important features and fixing most important bugs to make the multiplayer game actually playable and as consistent as possible, making it good enough for the next video development update.

With that done, the game gains a solid base that i can work on for the rest of the features and improvements planned.

To start things off, here’s what has been worked on:

Scoreboard and match end/start

Until now, matches didn’t end and there wasn’t a scoreboard. To make the step to having functional matches and starting new matches, a scoreboard was implemented where each player has scores assigned to them which are also networked synced, so everyone can see the current state of the match.

The current game mode implemented is Deathmatch, so the scoreboard implemented is only for that game mode. This was implemented in a way that would be easy to implement for other modes. Here’s a WIP version of the scoreboard:

desktop-10-07-2016-13-43-10-02

With the scoring system implemented, the server checks if a player wins every time the score is updated for a player, ending the match when a player wins. This triggers the ending of the game, with a slow transition to an ending screen with the scoreboard, and a timer to the next game. The server then sets the next game mode, map, etc, and starts the new match with correct state synchronization between all players.

Player AI Controller

To be able to easily test things locally on my pc, i decided to make a very simple AI controller by extending the player base to support AI controllers, where the server controls the AI automatically.
By using Unity’s Navmesh, it’s incredible easy to find a path between random points in the map, and making the player turn and walk/run through that path.

navmesh

By making simple AI controllers, i can very easily test the player movement, animation, client/server side hit detection, etc. With this implemented, i was able to test and fix much faster the problems i was having with the remote player animation and movement.

Here’s how it was:

And how it is now:

The movement is still work in progress and will be improved to a much more realistic movement and animation in the future.

Scope sights improvement

For some reason, the quality of the scope was terrible, but really didn’t tried to fix it before. It was difficult to see things through the scope, so i fixed it.

a15
Well, that’s it for this first development blog. These are some of the major things worked on, but there were also many smaller things and behind the scenes stuff worked on that can’t be put into this post.

Hope you like these small development blogs and thanks for the support!
Tiago

No Heroes Roadmap to Early Access

untitleddasd

Roadmap to Early Access

I created a Trello board for No Heroes, where it shows the tasks needed to be completed until the Early Access release.

This Trello board was made for two purposes:

  • For me to organize all tasks needed to be complete. This shows me the overall picture of what needs to be done, and will let me stay more focused on specific tasks.
  • For you to see the development progress that has been done and needs to be done until Early Access. Hopefully it will give you an idea of how many things go into making a game.

trello

The Trello board is not yet complete, so expect it to grow in the future. As of now, it currently has 101 tasks to be completed.

Click this link to go to the No Heroes Trello Board

No Heroes Development Updates

From now on, i will try to do regular development blog posts describing what has been done since last development blog.

I can’t guarantee that these updates will be done every week, but the updates will always be made on the same day of the week to be consistent.

All updates will be made on this website, so be sure to follow for future updates.

 

Thanks for the support!

Tiago