January 4 2016: A new architectural style
We've been busy over the holidays integrating the latest functionality and overhauling the architectural style of the hub areas that tie the levels of Code Hero together.
You've seen in previous updates the Mind Map environment inside the brain that ties everything together into a graph of levels. That functions as a conceptual map. But there is still a Gamebridge Unityversity campus to situate all the levels of the game in, and this hub world has changed a lot since the early bright white vector art style of Code Hero 0.35. It's a big art challenge so we won't be showing it until it is more complete, but here is a lititle piece of the hub in the library that links all the different sections together.
The style is influenced by Bioshock's retro-futurism. In Code Hero's case, the architecture of Gamebridge is based on the Greco-Roman motifs but heavily modernized with elements of holographics, interactive displays, colorful LED lighting arrays, neon signage, and more. It is coming together finally in a cohesive way and we look forward to sharing more as it gets more filled out.
December 22 2015: Physics-based audio, interactive grass and foliage shaders
The new compiler work continues, and we're working on several upgrades to the control, physics, graphics and audio systems. Here's a clip of some of the work in progress. Things to note: Manipulating objects, foliage sounds, foliage bending, DirectX 11 foliage shaders, foliage rustling sounds, physically-based object collision sounds for slides and impacts of different material types such as the red plastic box and the wooden crates.
We've added an object manipulation tool to grab, move and throw things without having to execute code to do it. This is handy for making interesting puzzles, and moving objects make the world feel a lot more lively.
Object manipulation currently resembles the gravity gun effect with disembodied hands like most FPS systems, but this is planned to be replaced with inverse kinematic hands so that the player's actual character model will reach out and grasp arbitrary objects.
Physics-based audio collisions
Letting the player move and throw things around places a higher requirement for realistic collision effects, which is why we're overhauling our collision system to do physically based audio. Different types of objects make realistically varied sounds when bumping and sliding into each other with different angles and forces.
Physical footsteps are next
Terrain types cause different sounds as well, and we now have to replace our footstep system with the new physically based sound one so that footsteps are just collisions of foot-shaped objects and different kinds of footstep sounds could be generated from different footstep materials and velocities just like any other kind of collision.
Advanced bendable grass and foliage
In addition to hard object and terrain collisions, foliage and grass need to react to character movement and object collisions.
The advanced foliage shader is working now with bendable foliage and large grasses. We're adding sounds to match, and we plan to contribute the resulting integrations between foliage bending systems and physically-based sounds to the asset creators and community.
We have also implemented the Direct X 11 grass shader, which provides incredibly realistic high-performance simulation of each blade of grass akin to NVIDIA Turfworks technology. It takes some tweaking to get the shader effect around each animal to bend the grass correctly, but the result of watching the animals bend grass as they cross a field is worth it. Crushing the grass leaves it bent until it recovers, enabling you to track characters moving through the grass.
Flocking birds and insects
The Search farmhouse already had flightless chickens to interact with, but now the songbird ambiance in the sky is coming from dynamic flocking birds. They perch all over the level, and they'll react to the player.
Character controls upgrades in progress
We've experimented with a new 1st person/3rd person character controller that adds parkour mobility controls to make exploring environments a lot more fun. It has a lot of components, layers and tags that need more work to integrate into our existing main character controller.
Unity needs guides to integrating everything
Unity has a wealth of powerful asset packages to assist in implementing many of the core gameplay and art a game needs, but there is a lack of coherent guides to integrating all the best-of-breed systems together into a complete gameplay experience. We will be sharing how-to guides covering complete game integrations and introducing those integrations within Code Hero's game's levels.
Code Hero will teach not only the programming aspect but also how to integrate the various technical systems with art and audio assets for the best possible effect. Getting these things right in the game has an added payoff when we can teach the players how to achieve the same things in their own games.
Unity badly needs a standard for namespaced multiple tags and layers
Note to content creators out there: Tags and layers should be used sparingly, if at all. They are assigned text labels but stored numerically, and every asset developer that uses tags and layers picks numbers more or less at random hoping they won't conflict with others. You get a maximum of 31 layers and they ought to be used only for rendering and physics discrimination.
Merging different tag and layer number assignments is a hassle, and it makes integrating asset packages needlessly difficult. There are several solutions that add multiple tagging of objects.
We need an extension that adds asset package-definable tags that don't depend on hard-coded numbers that result in conflicting numeric assignments.
December 11 2015: Search level and animal AIs
As C# compiler integration work continues, we're preparing the first levels that will introduce the new systems. The Search level is progressing nicely, with the barn house containing a haystack search challenge to introduce the topic.
We've added a more interesting kind of thing to search for: animals. If you remember the origina GameObject.Find training in the original Code Hero prototype, it had some inanimate tanks as example targets to learn how Find works. The new animals provide a much more engaging subject to search for, and their AI makes them fun to interact with. We based these on the HerdSim system, and added calls and head tracking interactions to make them engage with each other more believably.
December 4 2015: Compiler integration and performance manager
This week we've gotten two new features working: the dynamic C# compiler and a new performance manager.
Dynamic C# Compiler Interface
We're working on continuing to integrate the new C# compiler to an overhauled GUI for code editing. The old Unityscript compiler used tricks to emulate how components work in Unity, so its interface was a bit different from regular script editing. This was part of why switching to C# was necessary. The new compiler is capable of exactly the same things as normal scripts compiled by the Unity Editor, so we can overhaul the whole Script Editor interface to edit actual script files now in a way that should make switching up to real Unity development very familiar.
Many of the graphics features of the new Unity 5 graphics system compete for CPU and GPU cycles. On high-end systems, the frame rate is good, but laptops and the low-cost Atom tablets that are our minimum spec need the detail and effects levels dropped automatically to reach acceptable frame rates.
The first feature to use this is reflection probes, which have three update modes: Awake, Every Frame, and From Script. Every Frame bogs down performance with more than a couple probes rendering cubemaps multiplying the render burden every frame.
Our Performance Manager talks to a component called Reflection Culling which refreshes reflection probes using the mode From Script and ties the refresh rate of the probes to their nearness to the camera and the current frame rate.
We'll put every optional graphics feature on an automated diet so that most players won't have to customize graphics settings to keep the game running smoothly. This is especially important when different areas of the game vary in performance demands. Settings that seem smooth in early areas may prove unplayable in later more complex areas, so automatic performance management should make this less of an issue.
December 2 2015: Dynamic C# compiler working
We're making good progress on one of the hardest technical features of the Code Hero roadmap, switching from player-written dynamic Unityscript to a new dynamic C# compiler. The first build with the new compiler is taking longer than we expected due to cross-platform issues. We have it working on Mac presently. The Windows version is still throwing Win32 exceptions and it is going to take a bit more work to get it working on all three platforms.
With the new compiler, the Code Ray can load new dynamic scripts at runtime. When we attach them as MonoBehaviours in the editor their variables are inspectable just like normal components pre-compiled by Unity itself. This opens up all the language features and patterns without any of the restrictions that most C# REPL systems have. The scripts can link against each other and anything Unity has compiled already. Scripts can be rewritten on the fly and recompiled to replace already running scripts at runtime, and still linked against all the previously written scripts.
Switching Code Hero's code editor and component creation interface over to the new C# compiler has been our top priority and this validates that our approach to implementing the new compiler works. We'll have an update this Friday and continue making weekly updates as we progress.
November 6 2015: Code Hero 0.5 preview
Code Hero is back. We are happy to announce that Primer Labs has moved into a new office space and Code Hero is under full-time development with the first public 0.5 build on track for release soon.
Every friday we'll share previews of what we're working on as the 0.5 features mature. We are inspired by the innovative development of one of the coolest Unity games developed to date, Rust. Rust's weekly community spotlights and development updates are the bar we aspire to hit on the road from 0.5 to 1.0.
If you want to see what a next-gen survival sandbox MMO that happens to be made with Unity looks and plays like, we recommend picking up Rust on Steam and joining the Rustafied server. We plan to host a community event there in the future to discuss some of the impressive Unity-based tech that Rust demonstrates.
We will be laying out the whole roadmap of what is planned for Code Hero's development. New features will find their way into the game levels of the early builds as we develop content around them but we'll provide previews of each feature from prototype to production-ready.
Mind Map learning navigation system
- Each level is a neuron on the map and teaches a concept that opens paths to connected neurons.
- FPS perspective walking through your own brain as you learn.
- Graph perspective for quick traversal and review.
The mind map is your central navigation system to traverse the neural pathways to each learning level.
DataBoss data structure & algorithm challenges
DataBoss tests your ability to utilize computer science's fundamental data structures in a race against time to search, sort and optimize data to deallocate or be deallocated.
The needle in a haystack problem teaches you search algorithms in preparation for DataBoss.
LightBoss Graphics Challenges
LightBoss graphics challenges teach you to master the effects that a well-tuned Unity pipeline can achieve.
Learn how to make games with the best visual fidelity Unity 5 can achieve.
- Physically based lighting shaders that realistically reflect changing lighting conditions.
- HDR volumetric lighting scattering through visible dust and air particles.
- Interactive night/day cycle with realistic sun/moon/stars and day/night nature sounds.
- Interactive dynamic weather lets you summon changes in the skies to create clear, overcast, rain, snow and wind interacting with dust.
- Relief terrain parralax shaders make every rock and pebble appear to pop out of the ground.
- Screen space raycast reflection extends Unity 5's reflection probes to produce accurately parralaxed reflections beside objects.
- Cinematic temporal anti-aliasing provides offline rendering quality in real-time, blurring the visual line between film and games.
Learn the performance optimization techniques that allow Code Hero to run well on the lowest-cost devices with maximum battery life.
- Scion Post-processing pipeline does all effects in a single pass like adaptive eye exposure, depth-of-ofield, color grading, etc.
- LOD dynamic level-of-detail meshes and culling to support low-quality modes.
- Streaming Sandbox asset streaming to allow you to roam through open world scenes.
- Low-power mode conserves battery power and runs on the least expensive 8-inch Atom tablet PCs.
Learn fundamental 2D & 3D art concepts as you learn how to create and utilize art assets effectively.
- Learn the industry-standard asset pipeline from Sketchup and ProBuilder prototyping to Maya/Blender modeling, Mudbox/Zbrush detailing and Substance Painter texturing.
- Foliage system has dynamically growing trees and individual blades of grass so you won't get that cardboard cutout feel billboard foliage causes when you put on an HMD to do...
Virtual Reality Live Coding
Programming and modeling the reality around you is really cool through an HMD.
- 3D holographic UI:
- UI was originally built on the same UnityGUI system as Unity's editor to be able to recreate the same scaleable widgets.
- New 3D Unity UI is replacing the 2D gradually and once complete will make the VR mode fully playable.
- 3D UI can embed in the environment connected to the content it relates to.
Visual Mission Editor
Developing Code Hero's content has been extremely complex, with every step in the game involving event triggers hooking into the editor interface and detected changes in player-written source code. To make content production more productive, we are overhauling the way we develop Code Hero levels.
- Graph-based mission editor to accelerate content development.
- Character dialogue lipsync integration.
- Support for expanding the game with modular content packs.
C# Code Ray Compiler
The new C# code ray compiler replaces the original Unityscript coding system. It's time to just learn C# and let Unityscript fade away.
- This is the biggest technical change since the original Code Hero alpha.
- System.Reflection.Emit generates DLLs every time you run code.
- The new system is much more complete and powerful than the old eval-based Unityscript system.
Artificial intelligence is the great frontier of computer science today, and Code Hero relies on a new kind of hybrid mentor AI to teach players game development and how to write your own AI characters. Ada Lovelace and other characters you interact with use a hybrid of 5 different AI systems that players will learn about and hack:
- Behavior Tree AI manages navigation and interactions with the environment.
- Finite State Machine AI handles changes in condition and player activities.
- Chatbot AI lets characters converse with players and each other using natural language processing and speech synthesis.
- Emotional AI models the way characters feel about players and each other. They observe what you do and word gets around.
- Neural Network AI uses trainable networks to recognize patterns that can trigger the behaviors, states, chats and emotions.
Unity Universal Character Controller
The character controller is the central component of implementing many types of gameplay and the Unicharacter controller supports a wide variety of perspectives and interactions.
- Customizable UMA-based avatars.
- Tutorials on how to create your own avatar clothing using Marvelous Designer.
- Embodied first-person and third person perspectives.
- First-person/3rd person embodied inventory system.
- First-person/3rd person embodied stealth system.
- Parkour climbing, sliding and wall running.
- Realistic athletic ability defaults that scale up to superhero-level presets with code hacks.
- Inverse-kinematic interactions with objects and characters.
- Pick up and carry arbitrary sized objects to solve puzzles.
- Character interactions like shaking hands, high fiving
Download Code Hero 0.2
While we ready 0.5, you can download 0.2. It teaches Unityscript, but most of what it teaches carries over to C#.