This Week In Veloren 74
This week we get a large update from the animation team. @Gemu talks modeling, @Snowram skeletons, and @Slipped technique. @XVar gives us a rundown on the progress being made on the skill system. We also have another art blog by @Pfau.
- AngelOnFira, TWiV Editor
Thanks to this week's contributors, @xMAC94x, @XVar, @theduke, @AngelOnFira, @Slipped, @Patro, @Redo11, @swedneck, @samuelkieffer, @Treeco, @Nancok, @Pfau, @zesterer, @CapsizeGlimmer, @WelshPixie, @Imbris, @Songtronix, @Shandley, and @yusdacra!
@zesterer has been working on castles this week. A #ux working group was created, and it is finding its footing. It will focus on improvements to how the player interacts with the game. @WelshPixie has been working on new shoulder armour. @XVar added chat messages when items are picked up, and the possibility to play different SFX depending on what was picked up. There are two placeholder sounds for swords and staves so far.
@xMAC94x has been continuing work on networking. He also upgraded the Rust toolchain version as the Cargo MacOS error has been fixed. @lobster worked on the ability to wield 2 one-handed items. More to come on this soon. @Pfau also has a new art blog #4, which you can check out here. @AngelOnFira has gotten around to lots of the translations that have been waiting to be merged for a while.
Skill System Work by @XVar
This week I started work on implementing skills, the server-side foundation of a skill system for Veloren. Today there is only a basic EXP/LVL system in the game - you get EXP for killing monsters, and then you can level up. However, there isn't any concept of skills or abilities for players yet.
A game design meeting on Discord over the weekend resulted in the decision that adding skills to the game should be a top priority. It will allow us to start implementing all sorts of abilities and skills to flesh out the actual gameplay side of Veloren significantly. After this meeting, I drew up a quick concept of how the UI for a skill group might look. This was primarily to make sure I'd understood what the game design team actually wanted (a "skill matrix/grid" was frequently mentioned in the meeting). This is in no way representative of how the end result will look!
Not all skill groups will be in a grid form, or have this kind of progression path where you can only learn skills adjacent to already known skills, but all skill groups will have some things in common - an EXP bar, a skill point pool, and a list of skills that have been learnt in that group.
So distilling this down into what needs to be done for an MVP, we get this:
Building on the existing
Statscomponent that players have to include a list of skill groups the player knows, their current EXP and SP count in those groups, and a list of skills that they have learnt in that group.
Transferring this data between the client and the server.
Persisting the new skill groups and learnt skills to the database for each player.
Adding new messages that the client can send to the server to request a skill unlock or a skill point refund, with associated logic for the server to accept or reject this request based on the current state of the player.
While this might sound like a lot, I was actually surprised by how little work is required to implement this on top of the existing infrastructure within Veloren. Since it already has a robust client<>server messaging system, a full-featured ECS synced between the client and server, etc - there's not really much "plumbing" required to add new features. I think when a new developer to the project like myself can say this, it's a testament to the hard work put in by the Veloren team over the past few years.
Once this basic implementation of skill groups/points is in place, there will still be a fair amount of work left until players actually get usable skills - Pfau is working on the design of the in-game skill book UI. Of course, there's actually designing/implementing the skill groups/abilities which I'm sure will continue on for the foreseeable future as the game continues to grow :)
Modeling by @Gemu
Hello, my name is @Gemu. I have been remodeling a lot of the old creature models from Veloren, so far having focused on the reptilian and several quadruped animals. My contributions so far have been solely on the modeling side of the reworks.
I joined Veloren a few months ago. It was then when I first started creating voxel models and have received amazing support and feedback from the community. I offered to rework the old dragon placeholder model, and went from there. As I created models, the skeleton and animation progress made by @Slipped and @Snowram truly makes the models come to life. Since I have very little development experience myself, I've mostly stuck to making the models so far, and breaking them up in usable parts for animation. Seeing the finished models move around has been absolutely great. Therefore I plan to learn how to help @Slipped and @Snowram and contribute to the technical aspect as well.
So far, the reworked models of all existing reptile models and medium-sized quadruped creatures are pretty much finished. Aside from the pre-existing models, I have created additional creature models based on the same skeletons, which thanks to @Slipped and @Snowrams' hard work were able to appear as well. So far I've continued working on other old animal model reworks, this time focusing on the smaller quadrupeds. Once the larger quadrupeds will be all finished up, new models will be ready to go. I hope the players will be excited to see all these different kinds of creatures wandering around the world as they play.
Working on the model reworks together with the others has been very enjoyable and a great learning experience. The future will definitely bring more of that, and I look forward to expanding my horizon and experience towards other areas as well.
Skeletons by @Snowram
Hey, I am @Snowram. I helped to implement new quadrupeds skeletons into the game. A few weeks ago I decided to dive into Veloren animation by trying to improve some existing skeletons and animations. It has been a pleasant experience and the community has been very supportive. We have been working together with @Gemu and @Slipped to bring new life to the old mobs.
While I don't have a developer background, the Veloren codebase is clear enough for everyone to take a poke at it. I started by adding a new skeleton to improve the look of reptile-like creatures. They previously used the "medium" quadruped one that is shared with mammals. Reptiles have a very different gait and morphology so a "low" quadruped skeleton was definitely needed.
I imported every new models made by @Gemu and approved by the art team. Adding new skeleton parts is a tricky process where you have to declare all the offsets and rotation points for each new mobs. While these offsets are mostly the same for a given skeleton, you have to account for some specific outliers. For example, a crocodile tail is long and segmented while a turtle is short and made using a single bone. After that, I made several improvements to the "medium" quadruped skeleton. I broke all their legs into 2 bones in order for them to have feet. This change allowed for more complex animations.
Veloren can't use animations made using a dedicated software yet so all of them are hardcoded, fortunately, it is quite easy to animate voxel models using some basic math. Some time ago @Imbris added a way to hot load animations and it made the whole process more seamless than ever. I made some basic animations and @Slipped did his magic to make them awesome.
In conclusion, I very much enjoyed working as a team with everyone involved. This has been a great learning experience and the fact that each person has brought their own skillset into the collective effort is motivating. You always want to give the best to make the whole picture as great.
Technique by @Slipped
Hey, @Slipped here! Been a while since I've written anything up so this seemed like a good spot to jump back into the blog. My main branch for the last month or so has been the quadruped rework with @Gemu and @Snowram. It's been great to work with a team for a change as usually my work has been pretty isolated, and we certainly needed one here as the change has been massive.
As @Snowram described, the main goal is to separate the low, reptile-like quadrupeds from the taller wolf-like quadrupeds. At the same time we're reimporting all of @Gemu's reworks (every mob has been rebuilt from the ground up), as well as building in a much deeper animation setup for the mobs. This includes the breaking of the leg into leg/foot for
quadruped_medium as @Snowram mentioned, and also a general internal rewrite of the skeleton to adjust every bone to be a child or grandchild of a single parent bone (an important concept that I mostly neglected until recently).
The branch also has the addition of some new techniques that I've learned from the humanoid skeleton in the last few months. These include adding orientation tilt so that the body rotates smoothly on turns, and also using a ground-based foot movement model instead of using pendulum rotation as we see in main. We're also differentiating strides for the first time. Animals have been moving around at varying speeds in-game but their animation has not reflected that. Now in the branch, we differentiate a trot and gallop for varying mob speeds, with different movement frequencies and intensities of motion to highlight the changed gait. One last piece we've got in now is a basic set of attack animations for the quadrupeds. They're in a pretty plain state currently, it makes the combat feel a good bit more engaging when you see that feedback from the monster you're fighting.