DAYZ

Scroll to Info & Navigation

Tag Results

22 posts tagged dayz

The challenge and saga of Zombie Pathfinding

This devblog will be focused on describing the progress with one of our biggest issues: Zombie Pathfinding.

Development Priorities and Pace

Our major focus has been on establishing the architecture, both in the team and in the game, in order to deliver best in the future. This involved us drastically increasing the size of the team working on the game. This had a severe short-term impact on our progress as our existing team had to devote time and resources to training and planning. The new zombie pathfinding is a good example of this approach beginning to produce results.

Some examples of future major changes coming as a result of this new focus:

  • Entirely new rendering system (allowing potential upgrades to DX10 or DX11, ports as well).
  • True multithreading / multicore for servers and possibly clients.
  • Completely new animal AI that mirrors an actual animals behaviors.
  • Redeveloped “action” system, replacing the mouse-wheel scroll action system.
  • Complete refactoring of the inventory system. While not a big change for users, possibly allows some more advanced systems to be implemented and better performance and less bugs.

Background

Zombies have proven to be one of the most difficult to develop components of the game. When we were developing the game we realized that in the time we had, we would need to work within the parameters of the AI already in the engine. In the engine, AI is calculated on a “per agent” basis, with some caching for things like targets (shared target info, etc…). In the mod, this was dropped in favor of calculating visibility and target info on a “per player” approach. This meant that zombies in the mod were simply pawns, activated by players moving around.

In addition to behavior problems we also experienced problems with pathfinding and collision for the AI. We were getting the engine to do things that it was never designed to do, especially regarding interiors of buildings. We attempted to refactor these solutions to accommodate our changes but, as can be seen by playing the current build, they fell short of our expectations. In the end we decided it would be easier to develop a new approach from scratch.

The Challenge

There are many exciting solutions available for pathfinding, it’s fairly standard fare in the video gaming industry. Our problem was not unique, but our situation was: our world is very big yet it requires the same precision as a small one.

The team devoted to solving this decided to use navigation meshes. The serious problem it presented, though, was how to generate these meshes, with nearly 2 million objects on the map doing it by hand would not be an option. So a method was devised to split the world up into grids, and then raycast at a precise interval and generate chunks of navmesh. This is all done during the packing process and “baked” out into data that can be read by the server and client. This uses the wonderful approaches outlined in the open source navmesh project Recast and Detour.

The Results

I spoke to Martin Slavkov, programmer behind the solution, to help me outline the result with some screenshots.

Generating the Navmesh (view Imgur Gallery of generation)

image

A small program was developed to read through the world, load all the objects, and then work its way through tracing billions of lines to calculate the ability to move. This then works out not only where outside you can walk, but inside as well. It gives great precision while still working for a very large scale world both indoor and outdoor. Having a unified solution for pathfinding makes implementation much easier.

Use in-game (view Imgur Gallery of navmesh in action)

The engine is then able to load the chunks in as it needs. It does use some memory (around 600mb extra, maximum), but it only loads the chunks it needs. However as we are moving to 64-bit on the server side, this reduces any potential issues with memory.

image

Performance optimizations can be very significant. Currently the team are working on parallelizing the AI pathfinding function so it can operate on a separate core. With all new functionality we are developing in this way, unfortunately that means that it can take longer for us to develop but the results for performance can be massive.

Previously two different systems were used for navigating AI. The exterior one handled navigation around static and dynamic objects, and an internal “path” system was used for building interiors. This involved artists defining paths that AI could follow. We had to drop this interior method because of the massive performance issues with large numbers of agents.

image

In the screenshot above, you can see a path between two red points. Because the system is now unified it means that more efficient (and more natural) pathfinding solutions are available to the AI, at a fraction of the performance cost as before.

Report from the Lead Artist, Chris Torchia (View Imgur Gallery of new art)

I’m happy to report on the loads of content which will soon hit experimental servers. Recently the Prague and Bratislava studios had our first meet and greet so I was able to get a first hand look at all of the ongoing work by the artists and animators on our new animals. We have a basic implementation of prototype animals that will be swapped out by our Bratislava artist’s work which is looking incredible!

Improvised fishing tackle and a carp were created, which players will be able to catch in ponds. We have also created some filet models which you will eventually be able to cook. This will all add up to be a literal game-changer. Speaking of animals - we also met Big - the office pet tortoise in Bratislava. Hm, that gives me an idea…

Our character artist is further expanding with the addition of a new large-capacity police vest to go along with our ОMON-inspired Орёл uniform. We have also started working on EMT, Firefighter, and finalizing the Gorka uniforms.

Fireplaces, Hunting, And being a lumberjack!

We pulled fireplaces and hunting from the previous update in their state at the time, we felt they would hinder gameplay not enhance it. The extra time has been spent improving gameplay aspects and also identifying how we can better support it.

The build to experimental will show the basic structure of how this will work. Chopping wood from trees now gives logs, and after a certain time, the trees will be “expended” and fall over. Tree cutting is done by holding an axe in your hands, and using the mouse-wheel action menu. This is a prime example of why we want to remove the mouse-wheel action system. Instead of this, we envision you simply hitting the tree with the axe and being rewarded with wood - but that is for the future.

Fireplaces can be upgraded with stones, which are recovered from the ground around rocky areas or by hitting rocks with a pick-axe. Fireplaces can be crafted by making a “fireplace kit” out of items such as rags and kindling. Kindling is recovered by searching the forest floor for sticks. All these scavenging aspects need more refinement as part of a new action system, but they’re exciting changes that will pave the way for more complex systems such as horticulture.

Bratislava Team Visit (view Imgur Gallery of the visit)

We visited our team in Bratislava -  they have a TURTLE!

The next update

Our current targets have us putting out builds to stable once a month, a huge inspiration for approach we aspire to is Prison Architect who do this very well. We have no set timeframe for experimental releases, these are done to assist us with preparing for stable releases.

Above all else, it’s vital that people appreciate several things:

  • Different tasks take different amounts of time
  • Priorities for tasks are built around what is needed based on dependencies, not what is most needed to satisfy the game design
  • Scheduled builds are targets, not absolutes. We will delay and postpone builds where we are not confident in their status.
  • Devblogs are no longer scheduled weekly, and are done as often as we can to provide background for our progress.

The Final Word

This is an extremely exciting time for us all as we come out of two months of very aggressive growth. We’ve expanded the team a great deal, taking a huge risk in doing so. That risk is paying off, and we’re excited to see the massive impact that the pathfinding and collision changes will have on the DayZ experience.

Experimental Branch saw many changes in 0.44, which have been released on stable. Two very important changes were improvements to multiplayer netcode and an entirely new mouse control system that removed the previous one based on mouse acceleration.

We’re now continuing our work optimizing and bug fixing, while others in the studio work towards new functionality for hunting and survival.

Respawning Loot Experiments

We have been gathering a huge amount of metrics around loot spawn and distribution from the experimental servers, culminating in a test of an engine based loot respawn system last night on experimental. Out of this we identified some very significant optimizations we can make to how loot is managed, and also identified how we can make loot respawn.

These changes will flow in over time as we are planning to do this in iterations. Most important for us is to allow loot to respawn, even just at a basic level. Once this is done we will focus on persistent items (backpacks, tents, potentially even all or most items). Finally we will focus on globally managed loot.

Graphics Optimization and the Renderer

Work has commenced on disconnecting the renderer directly from the simulation. This would then free us to change (or even replace) the renderer much easier, allowing greater optimization and new functionality such as better particle effects. We have no timeframe for this completion no any specific goals beyond preparing it for future goals, but it’s exciting for us to start this work.

This work will offer us the potential for future very significant client FPS optimizations, such as better scene management, to solve issues people experience such as low FPS in cities.

Network out-of-sync problems

We are also looking at various out-of-sync bugs and other issues posted in the dev tracker. A great deal of progress was made on some issues with the 0.44 patch, so we encourage those having serious network problems to try out the game now with the new update. Many of the remaining issues (such as rubberbanding) are related to low server FPS that will be fixed with performance optimizations.

64-bit Server

This is now fully compiling and ready for test deployment. We are currently scheduled to test this deployment on experimental next week. While it is unlikely to improve performance of the server, it will remove memory limit problems we previously experienced (particularly with the growth of ragdoll and physics in general on the server). It’s also a huge milestone for us in other areas of work focused on making the dedicated server environment much more robust.

From the Lead Artist, Chris Torchia

I’m really happy with the direction of the artwork in DayZ and have to point to my great team of artists who make it happen. Its been another busy week for us and I can’t wait for you guys to see all the new content on the way.

Character Art

We just finished a basic police uniform inspired by some combination of Russian DPS and our local Mestská policie (affectionately known as the Hicks Unit for their enthusiasm with issuing tickets to our own Brian Hicks). We’re starting to play with OMON-inspired riot police uniforms but its a bit too early to show anything. We’re also working on a GORKA-E uniform in multiple patterns and we’re hoping to pick up the pace in this department as we welcome a new full-time character artist to the team. 

Environment

The team would like to focus now on some signature objects to spice up the vast environment and make the new explorable areas more unique.  We’ve just finished a new office building and will start an ornate municipal building which will serve as a land mark in a new large city being constructed by the map design team.  This city, called Novodmitrovsk, will have an industrial zone and is very close in size to Cherno or Electro but located in the north of our terrain.  We’ve also created a ‘graveyard set’ of various objects so the map designers can enhance the gloomy atmosphere.

Animals

Our Bratislava studio is wrapping up the first batch of animals requested by the game designers. The studio’s own animators and programmers will soon begin work on animal AI and animations to deliver an authentic experience for our players. We’re also working on a prototype fish model and an improvised fishing pole as requested by the designers. As an ourdoorsman myself, I’m really looking forward to seeing these survival features develop. 

Weapons

The venerable AKM is nearing completion I don’t want to be held to a specific date for when it will be released to experimental but it won’t be long.  I just tested out the PSO1 scope with a 75 round mag dump.  What have I done? I’ve created a monster! Also, we’ve completed a pistol that I think will give players some new gameplay options. It fires a .30 cal rifle cartridge and comes with a long eye relief scope. We’ve simply taking to calling it the Longhorn.

Animations

Viktor, our animation lead reports that his team was focused mainly on bug fixing in the past week. Many new hand poses were added for items so the player is holding them properly. They’ve also been working on reload animations for the P1 and Longhorn pistols, and AKM. At the same time, the programmers did a great job for allowing synchronization of animations between the bowstring and character hand.  It will also sync across the network since we feel its important for other players to know when the bow is drawn and when its at rest. It’s been a pleasure to see this develop over time and its only going to get better.

A very busy couple of weeks for the whole team has just ended. Everyone has been preparing for our next big update, scheduled for sometime this month. Some highlights outlined in this post.

Guaranteed Updates

As previously mentioned we want to move from the current situation where the client and server “spam” messages at each other, hoping that some of the messages get through. Because they can’t be sure, the updates have to be sent again and again. This is believed to be the major restriction from breaking the 100 player limit. We anticipate this will be appearing on experimental servers next week, and then onward into the update for this month.

Fireplaces

We’re ready now for our final implementation next week of fireplaces and the ability to light flammable objects on fire. Many visual updates and changes to the engine have occurred as part of this and we’re now making the mechanisms for players to decide where and how to make fires and how to light items on fire.

Physics and Throwing

We will be deploying this to experimental next week to gain some more feedback on its implementation. Progress on ragdoll has been steady although this is unlikely to be in experimental next week and will be ongoing for some time. A new animation system and animations have been made that allow you to “power” up your throw, the same system is used to allow you to draw your arrow when firing from the bow.

Player Mouse Control

Many players have outlined how much the mouse acceleration/controls need to be modified. Players head (view) will move instantly with raw 1:1 mouse feedback. Weapons may “lag behind” depending on how heavy and cumbersome the weapon is. For example, players with a pistol will be able to turn around and fire much faster than a player with a M4, or a chainsaw.

This represented a great deal of work and the complete replacement of the old system, therefore some bugs and plenty of tweaking are expected.

These will be deployed to experimental next week for more player feedback.

From the Art Team: Chris Torchia, Lead Artist

We’ve got our team working in so many different areas its hard to write a small summary of all the work.  

We’re wrapping up our part with archery and have a nice looking improvised bow and crossbow to release soon. Our animators have been spending time in the mocap studio to get accurate drawing, firing, and reloading animations for them and its looking great.  

Our new studio in Bratislava has been hard at work making some of the new food items which were shown by Dean at Rezzed as well as create all new wildlife models and we’re hoping the combination of archery, wildlife, and campfires will create a unique survival hunting experience for our players.

As for firearms, the P1 pistol is complete and configured in game. The same is true for the AKM but we need to spend some time polishing some of the rough edges before adding them to the loot tables and pushing to public. We’re finally going to implement stripper clips with the mosin and sweep through and tweek some of the firearm cfg values. As well, a little project I’ve kept under wraps is nearing completion. The first SMG in DayZ game will soon be ready and I hope you all will like it.

For character art our talented artists have created a couple new player heads for more unique looking characters which we’ll add in soon.  As well, we’ve made a Soviet-style officer hat and the tracksuit!  Next up, we’ll look at police, EMT, and firefighters.

Lastly, our environment art and map teams have continued to create new, interesting buildings and objects, as well as expanding the number of explorable towns, with the addition of Karmanovka – a town containing over 3000 objects!

Weekly Report: A step into survival

Another week for the team pushing towards a stable release. We considered releasing a version to stable branch mid week during maintenance, however there were still two serious issues to fix. The first was related to the testing architecture not being suitable for the large number of servers we were supporting on experimental, and the second related to the invisible zombies and players.

Invisible players and zombies

Fixing the invisible players and zombies was a product of moving to the client/server architecture but retaining some legacy aspects of the architecture. To solve this we have been hard at work continuing to revise the way the game works. A workaround we have implemented is that when desynchronization occurs between client and server, now the server will enforce the players new location by ignoring the clients reported position and teleporting the player to it’s position.

What occurred was that sometimes the straight path to a location was blocked due to desync on the server, i.e. the path on the server was different from the path on the client. This could result in players getting stuck in walls on the client (or server) and issues occurring.

Fireplaces and Emissive Improvements

One key area for our survival focus has been cooking and the ability to make fireplaces. In order to do this we have created a new system for dealing with “emissive” textures that allows us to implement a mask for emissive, as seen in the picture above the result can be very stunning. This has been combined with heat haze to produce some excellent results. Players will be able to make normal fireplaces, as well as upgrade them to makeshift ovens such as below:

Our designers are now working with our art team to implement all these changes so that players are going to be able to hunt and cook in order to survive in the DayZ landscape.

New towns in Chernarus

Our map team has been very busy, here are some sneak previews of some new areas that are coming in the next update:

New Weapon Content

Our art team have been extremely busy while we work on fixing the bugs associated with our current build. Focus is currently on supporting the designers with their survival features, such as the craftable PVC bow, fireplaces, and cooking. However we have also continued the excellent work done with weapons models, here are a selection of pictures below showing progress.

We’re nearing completion of the AKM and the model was a true labor of love by @artguyharry.  We’re working on staging the model now so its compatible with the attachment system and we really hope to bring variety to the possible configurations. By default the AKM will have wood furniture but we also noticed a great deal of customization in the AK civilian market and wanted to bring some of that more modern flare as well. A side-mounted PSO scope is being developed in tandem which players will be able to mount AK-pattern weapons.

Mouse acceleration and player control

We have been changing the way the player controls their character to improve playability. There was an issue with mouse control that affected many users of high DPI mice which we have now fixed. Changes to character turning should now also be consistent with how freelook works, which was taken from ArmA3. So we hope that this will improve the situation for players although we have more work planned on this.

Physics and Arrows

Continued work on our physics engine means that not only is throwing now nearly complete (it is now functional at a basic level), but it also means that ragdoll is very close to being a reality in experimental branch. This will open up many areas of development.

Work with the bow and arrow has come along very well. Bolts and arrows can now stick into their target, whether player or the ground, or an object. Additionally, animation changes means that we can now make the drawing and firing of a bow look better than ever before improving the versatility of our “gestures” based animation system.

Animals, collisions and zombie pathfinding

We now have an entire team, based in Bratislava, that are working on animals, collisions, and zombie pathfinding. This is a longer term task as it will require new thinking and new ways to fix the problem. We’re excited to see what the team can bring in the coming months.

Persistent Loot and objects

This was close to being implemented fully when we discovered some issues with the central server architecture that would becoming more serious for performance if we went live with it. These are being solved now and we expect to be trying some of those performance optimizations on the central server this Wednesday.

Where is the new build?

We are committed to not releasing builds onto stable to introduce new game breaking bugs. Now that we’ve fixed those bugs, we’re internally verifying and fixing any new bugs that have been introduced. We will do an unscheduled update the moment we are confident we have a suitable build to release

What is next for the future?

Once the current build is stabilized we want to finish up on our “survival” push for the month. This means hunting and cooking finished and process on our “survival combat” which involves the bow and arrow, crossbow, improvised weapons, and thrown items. In the more distant future we’re already planning for vehicles and barricading systems.

We look forward to finishing our work on the current build and having it out on stable!

Weekly Report: Starting our focus on Survival

When is the next update on stable?

0.37 will be deployed to Stable during scheduled maintenance on Wednesday, 5 March 2014 GMT. Changelog will be distributed at that time.

image

Bug Fixing progresses

This week most of the team has been focusing on key bugs, and some of the team have started our first new feature scrum.

New Team Members

We are inducting a large number of new people to the team, effectively doubling the whole project. Here are a few screenshots, and a short rundown on some of the key activity for the week.

image

Development of Cooking System Starts

This week we started on a cooking system. Heavily inspired by the outstanding cooking system in Project Zomboid, this will be part of a wider push in March to focus on Survival aspects of the game in general. You will turn your cooking device on (fireplace/stove) and then place the items in it.

The items will slowly heat up, and when at the required heat for the required period of time, they will become “cooked” and/or turn into something else (such as soup). Items can become overcooked, and items can also become cold via some process (this will be looked at later).

We’re very excited by the possibilities for this system.

image

Animation Progress

In the past week animation team was mainly focused to bring all two handed melee animation in game. We have added gestures for two handed tree, evades and other missing animations. Our next goal is to polish those and finalize them all. At the same time we have created new reloads for Ruger MKII, added stab attack with hay fork and worked a bit on new zombie animations which we would like to introduce somewhere in march. There was couple of bugs fixed, some glitches and animation graph improvements.

Emissive material and masks

Our graphics programmer spent some time redoing the way emissive materials work, this will allow us to better support the new fireplace mechanics that are being worked on.

Guaranteed Network Messages

We now have a new system we are testing internally for sending guaranteed updates across the network. This is very important as we believe this will reduce the problems for those who are experiencing severe desync. We are still testing this internally, and it will be sent out to experimental for more testing next week.

Final word

Much more is ongoing, and we look forward to presenting our Roadmap for the rest of the year very soon!

Here is our latest Dev blog created on the 24th February 2014.

So what’s in the Dev Blog?

Lighting improvements;

We are working on improving in-game lighting, not just from a visual perspective but also from a game play perspective, to improve playing at night.

We have enabled light sources such as flashlights and pistol torches, to emit light during the day as they previously haven’t done. However we still have to do some HDR tweaks

Physics;

This is an area we have wanted to put in for a while. We have added physics middle-ware, which allows us to add throwing items to the game but it also enables us to look at ragdoll and how the characters move within the world.

This is still fairly early days with physics, but we are getting much closer to having something that we can implement into the experimental branch with stability.

Containers;

We want to add world items that are lootable such as refrigerators that can store items, so they can be looted and the items within them can be interacted with.

Bow and arrows;

One of our programmers has been working on bow and arrows, in the video we show a very early work in progress clip of it. So far progress has been fairly quick with good results, so we are looking forward to seeing how this progresses further.

Animations;

Animations team has been working hard on getting new transitions and new methods of wielding melee weapons. This is still a work in progress.

We have moved away from our old way of how the animations were working which caused left handed swings. This restricts how the melee attacks are performed. As the hit detection is done from the item position this allows player to be able to easier work out where they are going to hit. This is still very much a work in progress but we hopeful and we look forward to your feedback.

New map updates;

Our map team has been working with artists to add new buildings into game and fixing collision issues with buildings. We have added police stations and new health center buildings across the map as well as improving preexisting towns. 

We are currently working on ensuring that all buildings spawn loot as this is a big issue at the moment.

Weather;

We want it to be almost like an antagonist, we now have rain and weather is properly synced across all clients so all players experience the same weather conditions. Rain will also currently make your clothes damp and then wet, but at the moment this doesn’t really have much effect but in the long term but we definitely want to expand upon that.

Hunting and cooking;

We have dedicated a whole group of artists programmers and designers with experience with hunting games, that are dedicated to working on animals, their behavior and hunting. To maximise the element of survival, our current sprint is focused on cooking and campfires.

DeSync;

One of the big areas people have been reporting is DeSync, we have been working on this directly this is due to the amount of bandwidth DayZ is using because a lot of the messages to do with the inventory are sent via non-guaranteed messages. So if you or someone nearby you has a large amount inventory items, all these messages will be spammed as the server can’t guarantee the client has received them. We have a couple of hot fixes in place but our long term goal for this is to have a guaranteed message system. So the messages are only sent once and not constantly. This will be an ongoing effort.

Zombies;

Zombies are an area of active development, we want to increase the amount of zombies. Tied with this we also want to improve their collision detection indoors. This will be one of the task of the new team will be the hit detection of zombies. We are also actively working on the zombie respawn mechanics, using some of the optimisations that we used with player respawns. 

We want zombies to be a good experience so they don’t spawn directly in front of players, this is what is taking the time, as we want to do it properly.

Persistent objects;

We want to have some objects have persistency throughout server respawns, such as backpacks, paper with written notes one and eventually when we bring barricading in, wood and wooden barricades and keeping it’s exact location in so far.

Vehicles;

Once we have achieved these objectives we can then look at vehicles as implementing vehicles too early could very easily upset the balance and impact other game play areas. When we do implement vehicles we are likely to start with slower vehicles such as  bicycles. Then we will look at more complex vehicles, where we can have many more degradable parts such as batteries or spark plugs.