Dondi - The Director, Kindest Man Alive
Well, it's been over a month since we bootlegged Isla Spiro into existence from a heightmap that was planned for a second island, which has been my primary focus. A lot of my time and effort ping-ponging in between backend and ultimately uninteresting things to read about was converting the plans of the second island to fit the immediate release of EVRIMA, which went from roads being paths, and certain POI's for the human environment that would have been done relegated to interesting natural structures (or the groundwork for the aforementioned).
One of the issues of an island so large that originally would have had AI already laid out was making sure people knew how to get from A to B, so I put in slightly distorted routes made of dirt and rock in for animals to follow, which needs to be converted into something a little more natural since a texture like that wouldn't really be what a trail looks like at all, so I intend to change the dirt and rock that is meant for the side of mountains converted to compacted dirt and lightly sprinkled foliage and debris from consistent travel of large prehistoric animals.
Aside from that, if anyone is wondering, landmass doesn't work properly with world composition. It would've been nice if it did, so we still have to do rivers the old fashioned way (completely handcrafted) which almost always has some error in it, no matter how many times it's been combed over.
Technically since the time of my creation of my part of the devblog, EVRIMA has been out for a little over 24 hours, so aside from map fixes and helping out respective branches of development where I'm needed, most of my time is spent reviewing feedback and videos to see the impressions of everyone that has their hands on it. One of the original shortcomings, is the origin of the Isle starting with a roster that we didn't really have a choice in and struggling to fill out an ecosystem. So I'll be completing a roadmap with pools of dinosaurs that will be categorically selected to fill out the needs of our ecosystem as it expands.
Paradym - Business, Paperwork Mogul, Discord Whisperer
Since the last devblog we’ve done a ludicrous amount of work both internally and externally and while we’ve made some mistakes along the way we are always learning from those mistakes.
I’ve been chasing down NDA’s, Contracts and liaising with everyone trying to answer questions, give the developers whatever support they need and preparing with our DevOps engineer to spin up a slew of official servers for the launch of EVRIMA including the documentation that goes into making that available to the public so the community can host its own servers for EVRIMA.
It’s been a pretty emotional time as we onboard new folks, deal with the hype and criticism of what we’ve put out into the world and work to combat those issues as they come up. We’ve been very cognizant of the time it’s taken for us to get here and place EVRIMA into your hands. I look forward to seeing the reactions of the public, both the good and bad so we can keep making a better game.
Filipe - Programmer, Squasher of Bugs, Master of the Keyboard Stream View.
The last month was mostly bug fixing and mechanic improvements in preparation for
the long awaited update (EVRIMA). Grab/Carry is a huge and very complex mechanic that has given me and QA a lot of work, but I hope that in the end it becomes a “must have” ability in-game.
We had a major problem that was causing players to stutter whilst moving around, which we managed to fix by changing the network manager settings and correcting replication values. Some more improvements are possible and also network performance will receive more focus during the next weeks with the implementation of the Replication Graph. The Replication Graph (Engine Plugin) is a system for network replication in multiplayer games that is designed to scale well with large numbers of players and replicated Actors.
I would like to talk more about one specific thing that isn't very well known by those outside the team, which is swimming. Swimming is a cool mechanic, but most games have it by simply adding a Physics Volume box in the level, setting it to water type and then the engine handles most the physics and buoyancy. The problem is that you are restricted to the shape of those boxes, they don't work with angles, they don't move in game, don't replicate and if you have a ocean covering your world, that box will prevent the possibilities of having caves below the sea level, because you would hit the invisible box and start swimming.
Our system fixes all those problems. Basically we don't have to place thousands (yes, that’s right, thousands) of those boxes in the map anymore.So lakes and rivers have a more accurate swim system based on their shapes, oceans don’t have a giant water volume anymore so caves are possible, in land or water. Also allows us to have drought and flood systems, and another cool thing: angled water surfaces, like rivers on a hill for example, which can have a "water flow" force that can pull players and corpses without causing a severe hit in performance. Besides all that, we are working on some gameplay balance. Adjusting things like damage, health and stamina restoration, stamina drain, hunger decay, etc.
Another funny bug we had in the last few days is related to changes we did for scaling dinos with growth. Sometimes adult ones were being seen as juvs, but floating around (video: https://www.twitch.tv/sheepzf/clip/AlluringSecretiveAyeayePunchTrees). After some investigation we managed to find the cause of it and fixed, but the laughs are going to stay for a while. :D
QA is also giving us awesome suggestions and ideas that we are discussing and applying to the game when possible, their help is highly appreciated.
Adam - Programmer, Scent Guru, Master of Understated Burns.
With our QA team diligently finding all the bugs we tried to hide in the game, I spent a lot of time fixing various issues.
A visual effect for scenting is something that I had been putting off for a while. One reason is that we never really reached a fully fleshed out consensus on what we wanted it to look like exactly, the other is that water is difficult to deal with. The ideas we had were seeing a fog through walls where the object is, or a radar/compass-style effect around the player that shows you directions. As a combination of the two I started experimenting with a fog that gives out particles which are attracted to the dinosaur.
We have two types of water sources you can sniff out, lakes and rivers. Lakes are implemented using large boxes that extend under the landscape. We couldn't rely on just highlighting those, since you would see water where you can't reach it. I ended up creating a system that finds points of the water surface that are not covered. These points are used as the source of the particles, giving a nice effect. The same concept was surprisingly simple to apply to rivers, I just had to use a random spline point instead.
The visuals could be a bit overwhelming with a lot of water/food around so I added a little change to help with that. Depending on your current hunger/thirst the different effects are more/less visible.
Another large issue I had to tackle was seamlessly blending from the juvenile to the adult locomotion animations while keeping it in line with your movement speed. In many games the speed your character is moving and the speed they move their legs are not necessarily the same. Of course they are made to line up, but it's controlled independently. Unreal Engine provides tools for blending different animations but it has its limitations. We had a set of animations working in the juvenile state and one in the adult state. Continuously blending from one to the other posed a challenge, since juveniles move faster relatively to their size. A good amount of math had to be changed, but I made it work while keeping the movement and animation speeds in sync.
A new addition to EVRIMA was saving. There's not a lot of data we need to manage just yet, but it's something I'm sure you'll appreciate. Not much to talk about with this one.
What do you get when the animator/manager's favorite dinosaur makes it into the game? More animations than what you can fit into your control scheme of course. The Tenontosaurus has a wide range of attacks you can perform depending on your camera angle. At the time of writing it's still subject to change and unfinished. Luckily we're using a solid framework for the dinosaur abilities, so adding these attacks was quite smooth. I changed some of the bite ability to make parts of the code reusable and to increase maintainability.
We were having movement jitter issues for a while that needed to be fixed. The cause turned out to be the collision between quickly moving characters. Unfortunately in a networked environment, player locations are not replicated exactly across clients. Meaning that the player's game and the server, sometimes disagree on what should happen. In these cases the server's opinion takes priority and the players experience teleportation and jittery movement. We came to the conclusion that the collision had to go.
This came with a load of other issues that needed to be addressed. I added several new mechanisms that simulate collision without having to rely on the built-in solution. Generally speaking, you will not be able to walk inside other players. I was able to make use of the existing obstacle avoidance mechanic for this. The biggest hurdle was still being able to jump inside/through others.
I ended up going back to our implementation for replicating custom movement and reworking it to make better use of what the engine offered. That was something I'd actually been meaning to do for a long time, so I was quite happy that I finally had a proper reason. Using these changes I was able to make it so that players are stopped when colliding in the air as well. We still had occasional cases of characters ending up inside each other. I solved this by making them get pushed away from each other a little until they no longer overlap. It's a subtle thing, but it does a great job preventing multiple dinosaurs standing in the same spot.Jack – QA Lead, “The Judge”, Destroyer of Programmer’s Hopes and Dreams
Jack – QA Lead, “The Judge”, Destroyer of Programmer’s Hopes and Dreams
I’ve been tasked with assuring the utmost polished product that we can deliver in the given timeframe. This means that I have to be “the judge” on which bugs are prioritized by the programmers and which features are to be considered a necessity for the release. When a bug comes through, I’ll slap a high priority label on it so that the programmers know it’s next on their to-do list. When a necessary addition still isn’t in the game, I get sad and spam ping them in our Dev Discord until it’s added. The most important thing to keep in mind is that everything you find will be subject to change.
To update you all from the last devblog, QA’s responsibilities have mostly remained the same. Find bugs, replicate bugs, report bugs, make developer’s cry. It’s proving to be a simple yet effective cycle as we’ve now reported 550+ total unique bugs (more than double the amount since our last blog!)
However, as we’ve been approaching the release date for the public build, QA’s focus has shifted towards play testing and balance testing for a lot of the recent patches. The team is comprised of a variety of different players; we have old timers that have been around since the day the game was conceived and contrarily, we also have some much newer faces that bring an entirely different perspective to the game.
I am certain that with the amount of balance testing and feedback that we’re taking onboard from QA that you’ll be happy with the outcome. If not, I’ll cry. (No, seriously, send feedback. Thanks.) In my opinion, balancing a game is one of the most difficult tasks we face as a team – there are no rights or wrongs – everyone has a different opinion. The approach we’re taking is to establish which “tier” we believe a species to be in. The main variable for this is obviously the scale of the creature; if a Utahraptor is in tier 2 then a Tenontosaurus would also be in tier 2. With this in mind, we will play test the two and try various scenarios, such as a one on one battle to the death or an outnumbered party that must fend for its life. We’ve been attempting these play tests almost every build now, with the full team giving their opinions on how it should feel and where adjustments need to be made, leading to some pretty exciting results.
We believe we’ve got both the Utahraptor and Tenontosaurus in a good spot now, but you guys will need to be the deciding factor on that.
KissenKitten - Production/Animation, Team Mom, Catherder Prime.
This month I've been devoting a lot of my time that isn't centered around overall production to animation. Lots and lots of it. My primary focus has been making sure all the animations that are needed for EVRIMA are in place. Like nibbling at mineral deposits and general quality of life tweaks to what's currently flowing through the QA pipeline and EVRIMA. Some of what I've been doing you may have seen snippets of. Like a troodon vocal here, a magy locomotion there. But outside of that, there are a few “new” things, like looping fishing animations that I've been prototyping. Animation prototyping often involves animating the same action in various ways (while not sacrificing productivity) to find out the best way to go about delivering on the action. So, when our dedicated fishers make their debut, the fundamentals of their mechanics will have been fully iterated on and tested. We want to make sure we choose the best way to deliver on the fantasy. A lot of the time, an animation that you’ve seen may have one or two other versions that you’ve never seen before. Some, even more than that.
In addition, I've been going full tilt boogie on some of the dinos that will be coming later on. With Bryan motoring through the rigging process, there's going to be plenty to keep the both of us busy for months to come as far as animations are concerned. But currently, my full focus is devoted to the Hypsilophodon which is likely to appear as one of the first AI dinosaurs post EVRIMA release. I'm working my way through vocals, eating, drinking and all of the other animations that really give a creature it's character. Then, I move out from that and focus on the animations that are essential but maybe not quite as expressive. Things like turning etc. So be on the lookout for some chirpy goodness over the coming weeks.
Tapwing- Concept Artist, Nightmare Fuel Generator, Characterization Wizard
If you’ve seen the colour concept for Ovi it’s probably obvious that cassowary birds were a big inspiration, with them being forest floor explorers taking advantage of their flexible diets. Aggressive, prideful, with moments of playfulness. A little wood grouse wormed it’s way in there as well with some of the posturing.
VisualTech48 (Gabriel Radić) - 3d Environmental Artist
For the past few months since I started working on The Isle team I’ve been pretty much incognito due to the nature of the items I’m working on, and especially due to the release date for my work is yet to be set and my stuff implemented.
So finally, I’m here to talk about it. These months I’ve been working on the Human Environment assets, which consists of various buildings, items and such, starting from the “Dockyard” and all of its content. For the time being I’ve set up the whole modular system which we will be using to create buildings and various assets. These consist of various kits, which each represent some part or type of structure, like a “wall kit”, “pipe system kit”, and so on, within which I combine and make a building out of it.
You can imagine it as constructing lego blocks, and then putting them into the right place without a blueprint really, as all of the modular stuff needs a lot of thinking through so all the pieces can fit together. But once fully implemented and assembled, it can make the whole process of making buildings faster. Along with the decal shader which enhance the look of the building, and along side Ikarop’s shaders give an amazing look and feel to it. So far I’ve got the basic system in place, shaders are being constructed, and we’ll soon be moving into the first level of implementation and see what’s next on the drawing board for the system, which afterwards I’ll be slowly constructing buildings and its items.
Looking forward to showcasing my work soon enough, and giving you that streaming I promised around 3 weeks! Cheers
dinosauriac - Sound
Outside of my other duties assisting in level design and UI, my main responsibility on The Isle for the past 5 years has been to give life to the world and its inhabitants through audio. The processes behind this have evolved considerably over time. When initially starting on the project back in the day, there was serious time pressure to create all the starting creature's vocal sets in less than a month. As things progressed, we developed a whole emotional range for these creatures, from friendly chirps to angry bellows, with variations for young and old members of the species.
With the latest iteration of the game you have the ability to grow your dinosaur from hatchling to full adult, and it is now completely seamless. This was one of the major design challenges for the past year, and required a complete overhaul of how dinosaur vocals are handled. The goal I set was that, if we're able to have smooth growth visually, we should have smooth growth on the audio side as well. It was a colossal task.
The first step was to break everything down into much more modular pieces to allow for greater flexibility in how we treat creature sounds in-game. Previously everything was merged down into a single roar effect, whereas now the key elements of growls, breaths and the signature core effect of each vocalization are separated into their own stems. These are combined in-game in different combinations, allowing for not only the ability to tweak each aspect individually, but to have a lot more variety in what your roar sounds like. This also means that distance processing has to occur systemically now, instead of using pre-rendered files for when you hear dinosaurs at long range. This is something that's still being heavily tweaked, but from applying different multi-tap delays and reverb effects we've achieved pretty good results so far.
When it comes to growth, the approach we took was to use various dynamic parameters to smoothly transition from hatchling, to juvenile, to adult. The pitch and volume of your calls gradually shift over time as you grow larger, to create a fairly convincing blend. We use a similar setup for the animal footsteps, transitioning from the light tippety taps of hatchlings to the larger more resonant footfalls of full adults, with different setups for small, medium and large creatures. Whilst it's not perfect and we can't account for *all* the effects a dinosaur makes, I'm really happy with how it's turned out. Hopefully when you get to play it, the approach we've taken feels a lot better than if we'd just had your dinosaur suddenly going from a timid squeak to a throaty growl when you randomly hit a certain point.
Allen - amar0k - Developer of NuDinoNet - Destroyer of AFK growers dreams
Hear ye hear ye. First dev blog for me, I have been with the team for a little over two weeks and it has been incredible so far. I honestly really enjoy working with the team and I am more than excited to see where the project goes from here!
I’ve spent most of my time getting familiar with project specifics and working on best methods to implement AI functionality. I believe the foundation is mapped and the concrete set.
A lot of you would have seen my streams which I really enjoy. Being able to interact with you all as I try to showcase as much as I can with the progress of the AI which I have nicknamed DinoNet, Basic AI with some intermediate interactions are well underway and with each day comes new challenges and advancements in AI behaviour.
DinoNet features currently consist of ;
Voice calling responses
Voice calling between AI
The current challenge is getting all of this to work consistently and fluently at scale. I want the entire DinoNet foundation to scale to any character type.
Some other challenges I’m facing are scaling large amounts of AI characters on a map, this is a problem that all games have to deal with at some point, I have a good solution and initial testing has shown promising results. So this will become a focal point for me over the next few months.
With the launch of EVRIMA underway I have also spent some time helping the team squash critical bugs so we can get the content out to you guys as quickly as possible.
That’s about it from me!
I cannot wait to see you guys fighting the AI and the hilarity that ensues.
This wraps up our Dev Blog #2 and we look forward to the next one, this one kind of got truncated due to the pace of work and we will likely spend some more time doing post mortems about some of the more interesting bugs so they don’t just live/die in the UDN forums and exist elsewhere.
Thanks for sticking with us and see you in the next blog!