Four For Four – Friday Night Mid-Month Update – June 12th, 2020
Greetings all. We don’t usually do a mid-month email update but we had some good news that given these extraordinary times that we live in, we thought might be appreciated by our Community. As to what it is, while the beginning of the subject is a baseball reference (4 hits in 4 at-bats), it also describes the success we just had in hiring. Over the last 2 weeks we offered four different people a place in our studio and all of them said yes. We are bringing in two new engineers (one senior) and two game designers. One of the game designers will be working on Final Stand: Ragnarok while the other will be focusing on Camelot Unchained. And, we’re very happy to say that many of you may know him, Christopher Junior, formerly Game Director & Senior Systems Designer for Rift. He was also worked on EQ2 as a Senior Game Designer where his focus was <drum roll please> PvP. Given his rather extensive experience with PvP, he’s a great addition to the team, who will help us take CU to the next stage of its development!
That said, we have a few other things to talk about as well and here’s the Top Tenish to do so:
- New Hires – See above!
- WIP – Tech – Mesh Simplifier Lee fixed a long-standing bug in which some of the border edges of meshes would get inadvertently deformed during the simplification process. This fix allows interior (i.e. non-border) geometry to get optimized while preserving the correct shape along the exterior of the mesh. Additionally, Lee improved the Dev UI we use for visualizing the steps of the simplification algorithm, allowing us to better debug future issues in this process.
- WIP – Tech – Store: QA is currently working through regression testing of the store according to functionality specs that Rob drafted up.
- WIP – Tech – Status Persistence: for statuses which persist between logins, respawns, and zone transitions, we keep track of the time they are meant to expire and restore from that point. This is most important for a long running status. Say you gained a really bad debuff that lasts for an hour, if you respawn after 40 minutes, you’d only have 20 minutes left on the status.
- WIP – Tech – Player scale support: Player entities now have a scale modifier which allows them to be bigger or smaller then their default size. This will be needed to allow Giants grow as they age. Ben has been playing around with different sizes of characters to get a feel for what size range is going to work best for our playable Giants.
- DONE – Tech – Bug fixes to Tags: Anthony has fixed two issues with tags. He added a way to pass FX tags from arbitrary places into statuses to alter what effects they use. And cleaned up and updated tags for a number of statuses that were either missing detailed tags, incorrectly tagged, or in some cases missing key functionality along with some mechanically important tags (thanks to iog for finding these discrepancies).
- DONE – Tech – Bug fixes to UI:
- Boons hover tooltip used in character creation appear to have existed in wrong layer.
- Ability builder allowed you to build an ability with invalid components
- Duplicate chat messages were showing up in chat UI
- Getting hit while in travel model caused a visible (but unknown) status to show up for your character.
- WIP – UI Art – CU HUD Reimagination: Koo has completed his first pass of concept for UI HUD reimagination and has moved on to concepting the inventory reimagination.
- WIP – TECH – C.U.B.E. : Brian has been testing the newly-created plot and zone import functionality that Matt built for Offline Building Mode. This feature will enable users to bring forward their “old C.U.B.E.” files into more recent versions of the game client via a slash command and file selection dialog. Materials will get automatically re-mapped on import, but the original file will remain unchanged and a new copy will be placed into the modern blueprints file path.
- Done – Tech – Remote Config: For a long time each of our gameservers/zones has had a little text file that lived on it’s hard drive that encompassed all of it’s configuration. These were curated by hand and updated manually. This meant they could diverge, get out of date, vary in subtle (or not so subtle) ways, and cause issues when we pushed from development servers to playtest servers. We’ve rolled out our remote config service which gives us a centralized location for these config files, version controls them, and allows us to remotely update them. This significantly reduces the surface for error and time involved in keeping these files updated.
- WIP – Art – Scenario Defender Npc’s – Viking Keep Lord is just finishing its modeling stage with materials and onward to be rigged. Concept art development and selection has been moving along for Tower Champions and modeling will begin on this next set of NPC defenders.
- WIP – Art – Crafter Barricades and Traps – Cloth material barricades and remaining leather material trap set models are wrapping up and set up for ingame use by early next week.
- WIP – Art – Environment – Performance has been a major focus for the environment team. Particularly recently, where we’ve been working on grass, improving assets to be more efficient and stronger looking. Other things in the last few weeks have included addressing trees, setting up new standards for modeling, spawn values and fall off of generated assets, and expanding the library of assets spawned in land generation.
- Points of Interest – Concept has created a selection of unique lore inspired concepts to enrich the rvr battleground as we develop the land. Concept is currently mocking up and applying these concepts to the land as a whole. Not only to make sure for good balance and consistency and refine concepts selected, but also giving vision on topography, giving it more interest and strong flow.
- Done – Art – Animation – Corrected Travel Idle Animations: A second pass at retargeting Realm, Gender, and Race Travel Animations were done. This fixed incorrect pose posture, fingers, and cape positions. Animations Included Idle, fidgets, flinches, and deaths. The toes and fingers needed to be fixed because of proper orientation changes on hand and foot joints for the master rig file.
- Done – Art – Animation – Female Travel and Empty Hand Combat Locomotion: Shared Locomotion animations files were adjusted to better reflect the female character model. Animation adjustments included a narrower distance between passing feet, and smoother overlap of weight distribution. These animations were also adjusted to support left hand torch.
- Done – Art – Animation – Adjusted Cape and Skirt Animation: New flowing cape and skirt animation for all locomotion and weapon permutation animation sets.
- DONE – Tech – Rendering Performance – AOIT Layer tuning: Did some shader work to collapse together the layers for order-independent transparency. This cuts GPU memory bandwidth requirements for rendering transparent objects in half. And that improves performance, especially on lower-end video cards.
- DONE – Tech – Rendering Performance – Impostor Quality: At long distances, we replace complex but non-moving objects with tiny pictures of those objects. This cuts way down on the number of triangles your graphics card has to draw. The quality of these has been significantly improved, which allows them to look good at closer distances, which means we can use them more aggressively to improve performance. Dense forested areas especially benefit from this.
- DONE – Tech – Rendering Performance – Impostor Speed: Previously we would store cards with all the angles of an impostor as a tiny mesh in the scene, and a Vertex Shader would set most of them to not draw. Now we use a Geometry Shader to emit only the card that faces you. While individually tiny, over a dense forest this improves performance by a consistently measurable amount.
- DONE – Tech – Rendering Performance – Concurrent Sorting: There’s a section of code that groups together all the renderable objects on the CPU into an optimal drawing order on the GPU. This code takes significantly better advantage of multiple CPU cores, which improves performance on multicore machines.
- DONE – Tech – Client Stalls and Hangs: Worked around a deep bug in our low-level threading library which could occasionally cause stalls on the client. Sometimes these would last a few milliseconds within a frame, so fixing them improves the consistency of our frame rate, but in the worst case they could appear as a permanent hang. No more!
Now, let’s also show off some of the work the art team has done over the last couple of weeks. First, let’s start with grass. Now, it’s a small thing as an individual blade, but when you put a lot of it in a field, well, two things happen. The field gets a lot prettier but performance can take a hit. Here’s an example of some of the grass that you’ll find in CU.
But, since the 60s, people don’t live on grass alone, let’s take a look at a couple of the barricades that can be used by players against other players. First up, the Arthurians:
I think that captures the feel nicely. Next, the Vikings:
Personally, I think it needs more spikey bits but it’s a good start. Now, let’s take a look at the Abhorrent Knight:
Fairly Abhorrent, doncha think? Now, how about the Arthurian Champion?
Next up, the Tuatha De Danann hero:
And last, and not least, the Viking Keeplord:
LATE BREAKING NEWS – While I was writing this update Andrew had me jump into Hatchery. He found one of issues with certain types of grasses and fixed them. Performance on my machine increased nicely and based on that, we’ll be pushing the build to Nuada Prep on Monday and testing will resume. For those who you with access to Hatchery, feel free to look at it over the weekend and let us know what you think! Andrew is also confident that he’ll fix some, if not all, of the Small Vector crashes as well. A great way to end the week.
It was a great week for us at CSE, four new team members (including one with tons of PvP systems design experience), major improvements to performance, and nothing but good news for Camelot Unchained. With that, and as always, we thank you for your support and patience. Please stay safe and uninfected during these times and try to be kind to each other. It’s been a tough stretch for the world since Covid-19 started its disastrous world tour, and with the tragic, cruel and unnecessary death of George Floyd, it’s gotten even harder to do so. It seems like that as a society, we never learn from the past. I hope that we do so sooner, rather than later.