Bots Roll Out! – Friday, August 18, 2017


We’ve had a solid week of progress and Impromptu Tests with our Big Bot Battles. If you haven’t yet had a chance to see one of the big achievements of the project in action, this weekend would be a good time to hop in! We’re pretty sure you won’t be disappointed when we say we plan on having some big battles in Camelot Unchained, even before we go LIVE! We’ll be running another test Saturday, August 19th, 2017 at 2 p.m. Eastern Time. This will be open to IT, Alpha, and Beta 1 Backers, with more information coming in a separate email.

For this week’s update, we have a lot of progress to report; not only for the week, but also for the month, with our User Stories update. As always, the Top Tenish list provides the highlights of the week’s progress, and the User Stories will provide a deeper level of detail for the past month. Let’s get started!

Top Tenish:

1. WIP – Tech – Unique Bots: We took the next step in expanding our “best of class” tech by increasing the number of unique-looking models we can fully render at the same time. After all, 1K+ Bots is great, but 1K+ Bots who all look different is even better! Dave and Marc have been working this week to support over 1000 unique Bots, rendering their own unique meshes and textures. This work also includes a boatload of memory and performance improvements, with more to come! So not only did we expand the uniqueness, but we also improved the FPS and lowered the memory footprint. We demonstrated this is by adding random colors to the armor, so it’s very clear that each Bot is unique, with its own technicolor dream coat. And once we go to a 64-bit client in the future, we’ll be ready to handle even more!

2. WIP – Tech – Character Info Screen:
Earlier this week, AJ began work on the Character Info Screen. This separate tab will be used for displaying things such as a character’s name, order, warbands, race, gender, class, Banes and Boons, primary base stats, secondary stats, derived stats, armor stats, and weapon stats.

3. WIP – Tech – NPCs: We’re still very early on in the life of this feature, and are primarily focused on immediate Beta 1 needs. To begin, Colin has hacked together dummies that run around, demonstrating that some of the main parts are in place. He has a prototype NPC server that communicates with the game server over the network, as well as the ability to spawn dummies marked as NPCs. The next step is to clean up the code, and start laying it out in a way that allows us to scale and build the real system.

4. WIP – Tech – Blueprints: Rob has begun revisiting blueprints, making them save and load from the server, and check for version differences. A working blueprints system for Beta will give us plenty of time to iterate and refine it. Going from C.U.B.E. to Camelot Unchained and back again will be as shiny as your new house was before those nasty invaders sang, “Come on baby light my fire!”

5. WIP – Tech – Channel Copy Improvements: The process of pushing a build from Hatchery to Fledgling, or any other server downstream, is called a channel copy. This was previously a manual, time-consuming process, and was even more arduous for the remote Seattle team. Bull worked this week to significantly simplify the process, and included web front-end to speed things up for anyone outside of the VA office.

6. Design – Progression System: Per one of our primary Beta 1 items, we’ve started work on the progression system. As we’ve discussed, we don’t aim to have players complete FedEx/kill/PvE-style quests. We want player’s actions to factor into the global scope of events taking place across the entire world. Player progression is intended to be a long-term investment, and to allow players to focus on what they like best: playing the game how they want to play. For Beta, we’ll be laying out the key progression elements, but will tweak the time it takes to progress during Beta 1. After all, we wouldn’t want you folks to advance in the Beta the same way you do at launch! Mark has handed off a design doc for feedback and tweaking, which will then go to Christina to map out the supporting tech needs.

7. WIP – Art – Archery Animation: Scott began work on a second pass of the placeholder archery animations. The current work supports a single action load, nock, and fire, with supporting locomotion, flinch, and death animations. Part of the next step will be to create the supporting pieces for archery ability phases, which will be used when we complete the tech.

8. WIP – Art – Environments: As seen in my stream this week, I have been adding more terrain materials and assets into the world for the Beta 1 islands. Expect these additions to slowly creep in over time, up to and including Beta 1.

9. WIP – Art – Mines: With Ben’s oversight, Dionne is breaking up all the mine pieces into individual sections, including primary room and hall pieces, as well as all the support beams, wood planks, and rocks. These will then be used by Design to build out a wide variety of different mines for Beta 1, and to prepare us for other Depths to come! 🙂

10. WIP – Art/Tech – VFX Weapon trails: Mike has been toiling away, trying to figure out how far he can take the current VFX system to support decent-looking weapon trails for abilities. Based on his critical eye, it came time to throw this ball to Andrew to see if he could work something out. As of yesterday evening, Andrew has a working first pass ready for Mike to begin playing with, where the particles produce better arcs without gaps.

11. WIP – Art – Weapons and Armor: Following up last week’s work on some basic arrow quivers, Michelle finished a pass on TDD-specific variations.

12. Art – Character skin improvements: Jon spent a bit of this week and last week investigating art improvements to player-characters’ skin materials. We’ve figured out which programs we should use to create the better normal and rough maps, and learned some lessons about tweaks we can do to improve the look. The next step is to look at the texture compression method we use, as well as world lighting.

A good, solid week’s effort from the team. Now let’s move on to our monthly User Story update, where we share with you, our Backers, a more fine-grained version of the completed work. These items are updated on our User Stories page on our website, where you can search for any subject you’re interested in, and see the work completed thus far. The first two cards on that page will also give you the high-level goals for Beta 1. For this month, we’ve completed more than our average number of tasks, mostly due to the fact that previous features are getting the rough edges smoothed out, new features continue to come in, and art continues to chug along on new assets.

At this stage in our Beta 1 development, most of the cards will be pre-existing items that need to be finished, with only a few new things popping up.

User Stories: 8.18.17 – 171 total
34 Old cards with 155 complete.
3 New cards with 16 complete.

As a Backer, I’d like to be able to be able to play an Archer.
Manual aiming revisit post re-ab
Time the bow draw sound to the bow draw animation. – Complete
12 unique arrow flyby SFX for class abilities. – Complete

As a Backer, I’d like to play in a procedurally-created environment. – Part Four.
Move ZoneController objects from a lock to a context. – Complete

As a Backer, I’d like to play in new biomes that change according to Realm ownership. – Biome 01
Generic chainmail footsteps. – Complete

As a Developer, I’d like to increase physics performance, as well as make changes easier to integrate.

Take a ParLL::Context for LoadRigidStatic/Dynamic’s callback in IPhysicsEngine. – Complete
Use low-priority context for processing loaded data in IPhysicsEngine. – Complete
Fix assertions in physics server startup. – Complete
Add metrics for data received in PhysicsServerConnection. – Complete

As a Backer, I’d like to know about smaller changes that don’t have their own user story.
Refactor scene lock code.

Remove unique requirement for character names. – Complete
Separate counting for Bot duplicates vs reused. – Complete
Bump the values for threadcount and working queue counts in MongoAsyncHelpers. – Complete
ResourceManager runs onChanged callbacks before onLoaded callbacks. – Complete
Add separate configs for different styles of combat logs. – Complete
Make Bot teleportation an explicit state machine. – Complete
TCPConnection::Connect() responds to events/inputs instead of blocking for the full duration of its timeout. – Complete
Update API server for character creation and Wyrmling to support any channel. – Complete
Arithmetic Encoder and Decoder now support continuous syncing. – Complete
Integrate Telemetry for real-time profiling. – Complete
Update stats in Basic perf HUD tab to display more Bot metrics. – Complete
Add custom colors to each piece of equipment on Bots. – Complete
Beta 1 documentation styling.
Componentize health, blood, and stamina. – Complete

As a Backer, I’d like to see the world of Camelot Unchained continue to develop through its lore.
Silverhands Becoming – Part 4 Final Draft – Complete

As a Backer, I want to be able to own a plot of land and build within it.
Make all the BuildingUI renderables add/remove from scene async. – Complete
Building commands no longer need an ownership override if you are an admin working on a single building. – Complete
Damage command works, and is centered on your position, if you are calling it from the client. – Complete

As a Backer, I’d like to see graphical and networking performance improvements, when building and destroying structures.
Improve profiling of BuildingEntity. – Complete
Have client create job to update building immediately when network message is received, to fix potential threading issues. – Complete

As a server Developer, I would like the user proxies to dynamically scale.
Terminate proxies only if they time out while spinning up. – Complete
Make the ProxyManager push debug data to tags so we can see in AWS what the proxy is doing. – Complete

As a Backer, I’d like to see improvements in server stability, speed, and robustness.
Replace abstract delegates on WorldSender with methods. – Complete
Make FastEntityReaderCommandProcessor work with any Entity. – Complete
Send client commands from proxy to game server using FastEntityWriter. – Complete

As a Developer and Backer, I’d like to see improvements in memory usage and threading.
Make EquipmentBuilder always Split, to account for a BlockingWait it contains. – Complete
Make RegenSegment use a ParLL task instead of FireAndForget. – Complete
ParLL::Join will directly take and work on a needed context immediately. – Complete
Fix for possible deadlocks arising out of outside threads trying to join even though they aren’t registered workers. – Complete
Prevent runorsplit from running high priority tasks from low. – Complete
ParLL::Add multi-split to send one job to all context threads simultaneously. – Complete
ParLL::Add ability for JoinAll to run independently. – Complete
ModelFactory uses more than one context from its context pool. – Complete
Get rid of spinlocks on ParticleRenderable and just handle changes in its context. – Complete
Shut down the particle tree and its raw pointers to our particleResource before we reset and throw our old particleResource away.  – Complete
Reorganize the CharacterManager code so we never join on the main thread.  – Complete
Perf improvements for terrain regeneration. – Complete

As a Developer and Backer, I’d like to see improvements in lighting and rendering.
Change RenderableSubdivider to deactivate differently so we don’t permanently destroy our surfaces. – Complete
Zone splits things into its root renderable for adding/moving zone objects. – Complete
Update impostors on a terrain segment inside the segment’s context. – Complete
Refactor the impostor code to use Contexts better. – Complete

As a Developer, I’d like to see improvements in the editor to facilitate my work.
Editor lets the user know when they aren’t running the patcher. – Complete
Add ability to reset all editor layouts from the main menu, in case workspaces stop appearing. – Complete
Create web tools project for browser-based tool chain. – Complete
Add a command line utility for copying channels. – Complete
Add front end to build server. – Complete

As a Backer in Beta 1, I’d like to have a sampling of generic clothing to wear in game.
Put equipment switching on a buildvar. – Complete
Add config value to allow us to control the max number of unique Bots. – Complete

As a Backer in Beta 1, I’d like to play as a Crafter with basic gathering and crafting mechanics for testing.
Modifying the GQL name on the makeRecipe output item to match other recipes. – Complete
Add support for ‘random crafting events’ to modify Vox output. – Complete
Add new slash commands to modify health/repair points of items in inventory given their ID. – Complete
Allow Vox to take health damage when it is used to craft items. – Complete
Update random crafting table to support modifying the health damage done to a Vox. – Complete
Create repair job, allowing an item to be repaired if it has a single repair point remaining. – Complete
Create salvage job that salvages a damaged item and degrades the quality of the returned alloys/substances. – Complete
Save quality for a substance as ItemQuality instead of a float. – Complete
Add new crafting query to return all items that are compatible with one of the Vox job slots, while listing slot compatibility per item. – Complete
Add unit counts to alloys. – Complete
Adding cloth and leather alloys to utilize recipe updates. – Complete

As a Developer in Beta 1, I’d like to see improvements in the ability system’s stability and robustness, as well as make it easier for developers to work with.
Skill prediction via creating a MockUpdater instance and running each phase event. – Complete

As a Developer, I’d like to have a selection of weapons that visually represent each Realm’s identity. – Arthurians
Quivers: First pass generic concepts. – Complete

As a Developer, I’d like to have a selection of weapons that visually represent each Realm’s identity. – Viking
Quivers: First pass generic concepts. – Complete

As a Developer, I’d like to have a selection of weapons that visually represent each Realm’s identity. – TDD
Quivers: First pass generic concepts. – Complete

As a Backer in Beta 1, I’d like to be able to pick an item up off the ground, put it in my inventory, and if applicable, equip it.
Adding Effects tags support for items. – Complete
Add an item tag check function for use in skill scripts. – Complete
Modify footstep sound effects depending on current equipment. – Complete
Updating the global item reset code to gather item batches to cut down on memory use. – Complete
Prevent insertion of items into inventory when you don’t have any. – Complete
Update the character query in the global item reset to only look for characters from the server’s shard. – Complete
Only update components that need to be updated onSearch for Inventory UI. – Complete
Ensure that two items are not equipped to the same gearslot. – Complete
Updating the nested item lookup to look at equipment component. – Complete
Rename Current/Max Durability to Current/Max Health. – Complete
Add stat for tracking health loss per item use. – Complete
Adding item location change sound effects. – Complete
Snap dropped items and siege engines to buildings instead of always to the terrain. – Complete
Fall back to client commands when equip/unequip/drop API request fail. – Complete
Update the item move API to allow for trashing items. – Complete
Secure item trading API and game support. – Complete
Disallow the firing of broken ammo. – Complete

As a player, I want to view a character UI that shows me my stats, allows me to swap out my equipment, organize my inventory, and see my collection of crafting resources.
Additional inventory icons. – Complete

As a Developer, I’d like a better instrument library to build interactive music.
16 additional drum samples added to library. – Complete

As a Developer and Backer in B1, I’d like better logging and feedback on abilities to support finding and fixing bugs.
Widget/Gizmo system:
Client side shape system to construct both geometry and hit tests for a set of basic shapes. – Complete
Create arbitrary shapes from the math::shapes library. – Complete
Render both transparent and opaque types of gizmos. – Complete
Add shape drawing slash commands (sphere, cylinder, cone, capsule, box). – Complete
Support combining shapes to make new ones. – Complete
Support adding a vertex offset for index buffer creation. – Complete
Add the ability to add semi-permanent debug gizmos directly to renderer. – Complete

As a Backer in Beta 1, I’d like to test the look and feel of combat with the new animation system, while wielding a greatsword.
Phase 1:
Offensive stance: Second pass combat idle. – Complete
Offensive stance: Combat idle fidget. – Complete

As a Backer in Beta 1, I’d like to test the look and feel of combat with the new animation system, while wielding a one-handed sword in either, or both hands.
Phase 1:
Offensive stance: Combat idle with left or right hand wielding. – Complete
Offensive stance: Upper body combat movement – walk, run, jump, fall. – Complete
Offensive stance: Mid slash attack. – Complete
Offensive stance: Mid pierce attack. – Complete
Offensive stance: Equip and unequip. – Complete
Offensive stance: Block/Deflect, flinch, death. – Complete
Offensive stance: General polish with skirt and cape animation. – Complete

As a Backer in Beta 1, I’d like to test the look and feel of combat with the new animation system, while wielding a one-handed club/mace/hammer in either, or both hands.
Phase 1:

Offensive stance: Combat idle left or right hand wielding. – Complete
Offensive stance: Upper body combat movement – walk, run, jump, fall. – Complete
Offensive stance: Mid crush attack. – Complete
Offensive stance: Equip and unequip. – Complete
Offensive stance: Block/Deflect, flinch, death. – Complete
Offensive stance: General polish with skirt and cape animation. – Complete

As a Backer, I want to seamlessly move between islands and zones without being aware that I’m moving between different game servers.
Seamless zone transitions:

Generate terrain border segments using control points at a specified subdivision level. – Complete
Send border segments from physics to game server, from game to presence server, then from presence to all game servers in the shard. – Complete
Intersect the border of the local zone with the borders of the other zones in the shard. – Complete
Generate border segments that form a loop and are in clockwise order, then merge border segments that share an edge. – Complete
Draw borders and intersections when generating heightmap image. – Complete
“Send the shard ID in ClientConnectResponse rather than PlayerIdentityMessage, ensuring clients have the ID by the time – Complete
they set it in the UI.” – Complete

As a Developer, I’d like to improve the visuals of our current characters and armor, and note lessons learned to move forward into our next iterations.
Audit skin rough and spec values to improve look of skin. – Update male Arthurian and male Viking as tests. – Complete
Update male Arthurian default hair model and material. – Complete

As a Developer, I’d like to improve, and add to, the SFX for re-abilitation.
Beating heart loop SFX for blood loss. – Complete
Generic item break sound for item durability. – Complete

As a VFX Developer, I’d like additional tools and support for VFX needs in Beta 1.
Images Sets:

Reset image set number parameter when someone puts a value in it outside of the allowed range of values. – Complete

As a Backer, I want an animation system that blends multiple animations together, and allows for immersive and fun combat.
Anim::Idler can optionally use the bind pose if there’s no idle clip found. – Complete
Move attaching sub-effects to AnimSkillEffects until after the clip is set. – Complete
Debug buildvar to show bones/skeletons using debug-drawing framework. – Complete

As a Backer in Beta 1, I’d like the ability to build, spawn, aim, and fire a siege engine at players and buildings.
Wire up idle and skill animations to the siege engine(s). – Complete
Unify BoneAimer between players and siege engines. – Complete
Disable jump command when using siege engines. – Complete
Update how faction is stored/updated to fix issues with siege engine collision settings and allow code to be shared between client and server physics. – Complete
Improve mechanism for tracking whether the server has received/applied targeting updates from the client that is durable across zone transitions. – Complete
Better collision geometry for siege engines based on looking up a CollisionResource. – Complete
Have server check that targets are valid. – Complete
Fix server targeting and add debug targeting HUD. – Complete
When adding a siege engine to the physics scene also update the geo object with the loaded collision bounds. – Complete
Hook up example of siege abilities costing the player stamina. – Complete
Add capability for controllable entities to occupy specific skill tracks for the controlling entity. – Complete
Add siege health bar to client. – Complete
Add new siege anim set tag and bone alias to support controlling the player’s movement and animations when using the engine. – Complete
Move player position based on where siege engine is aiming. – Complete
Update client UI layer to support new javascript bindings for siege health/target. – Complete
Update models of all Realm variations of Scorpion to include better working mechanisms for animations. – Complete
Re-rig updated Arthurian Scorpion for testing. – Complete
Rough Pass: Character animations for Scorpion, quick-fire, and full loading loop. – Complete

As a Backer in Beta 1, I’d like to be able to explore a mine using the portaling and zone transition tech, in lieu of the post B1 “bubble” tech.
Second pass rough propping of assets to create appropriate look and feel. – Complete
Second Pass: Water-eroded cavern props – modeling and materials. – Complete
Additional material set. – Complete
Creature Fossil set modeled and materials. – Complete
Props created: Wood supports, boards, rocks, etc. – Complete
Depths-inspired shrine model. – Complete

As a Backer in Beta 1, I’d like an interactive portal system that teleports me to other active portals based on availability and Realm control.
Second pass TDD portal marker concept, with Realm control material variations. – Complete
Viking portal model complete, in game, with Realm control variations hooked up. – Complete
Portal Markers convey whether the destination zone is currently active. – Complete
Add ZonePortalEntity and corresponding network states. – Complete
Add PortalComponent.Active and set it when the portal becomes active/inactive. – Complete

New Cards:
As a Backer in Beta 1, I’d like to test the look and feel of combat with the new animation system while using a bow.
Phase 1:

Offensive stance: Combat idle. – Complete
Offensive stance: Combat idle fidget. – Complete
Offensive stance: Upper body combat movement – walk, run, jump, fall. – Complete
Offensive stance: Flinch and death. – Complete
Offensive stance: Quick fire – Nock, draw, fire. – Complete

As a Backer, I want the ability UI used in combat updated to support the ability system functionality for the start of Beta 1
First Pass concept and styling. – Complete
First prototype functionality and animation. – Complete

As a Developer, I’d like to improve the speed of creating environments, adding additional assets, and audit work needed for Realm territory variations for Beta 1.
Existing assets set up as individual terrain mods:

Terrain: Mixed ground cover with clover. – Complete
Terrain: Pine needles with ground cover. – Complete
Fantasy ferns. – Complete
New terrain assets:
Terrain: Dead grass and dirt v1. – Complete
Terrain: Dead grass and dirt v2. – Complete
Terrain: Dark sand with pebbles. – Complete
Terrain: Brown sand with pebbles. – Complete
Terrain: Mixed ground cover mix – Dirt, rocks, weeds. – Complete
Terrain: Mixed ground cover with weeds. – Complete
As I said, plenty of progress–more than average, which is great! Maintaining a good pace is paramount, in order to clobber the work yet to be done.

For those of you scrolling down just to get to the art, welcome back! We’re a little slim in terms of new art this week, as several artists have been focused on less showy, polish-related tasks, and we’ve got a few people, myself included, who have been or who are out of town this week for summer breaks.

Despite having lots of polish tasks to work through this week, Scott was still able to get out a render of an update to the archery animation. This is still a work-in-progress, as we have more functionality we want to add to archery, but for now, this is a much better version than the previous rough pass. Click the image below to see it!

Next up, and definitely related to archery, we have some quiver and arrow concepts from Michelle. You can catch her concept art stream from earlier this week HERE.

Dionne continues to chug along on the mine assets this week. She’s currently taking all of the assets and breaking them up into separate pieces, while auditing them to make sure they can work as a system. It’s actually a fun part of the task, as there’s lots of problem solving and planning to make sure all the pieces can work together without overlapping. Even the names you give things becomes important when someone else is trying to find a specific piece. Once that work is done, Ben and/or Mark can begin building out various tunnels to audit the assets themselves.

That wraps up the week for us here at CSE, on both coasts! As a reminder, we recently updated our website with a link to information about Beta 1. If you’re curious about our goals in terms of player experience for Beta 1, this is a good thing to keep an eye on, as we’ll be rolling out more info every week if possible! Click the image to check out the opening sections of the document:

And another reminder: We’ll be having a test on Saturday, August 19th, 2017, showing off our Big Bot Battles. This will be opened to up to Beta 1, Alpha, and IT access at 2 p.m. Eastern Time, and there are more details in a separate email.

Have a great weekend all, and be safe out there.