Sandbox has been CryEngine Editor since Far Cry 1 was first released. In this talk we'll explore how it evolved during more than 15 years of active development and how it is structured. We will also look at some of the current tools and how we deal with the process of improving them, from user request to UI/UX design and finally coding.
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
Alessandro Osima - Making of Sandbox : CryEngine Game Editor - Codemotion Rome 2019
1. Making of Sandbox : CRYENGINE Game
Editor history, architecture and development
process
Alessandro Osima
Tools Engineer for CRYENGINE
Rome | March 22 - 23, 2019
2. Table Of Contents
• Sandbox Overview
• A bit of History
• Development Workflow
• Interesting use cases
3. Sandbox
• CRYENGINE Game Editor
• In development for almost 19 years
• Used to make Crysis, Ryse, Hunt, Prey and more
!!
8. CRYENGINE V
• UX driven development process
• UI Framework
• Asset System
9. UX driven development process
• UX vision is translated into both short-term and
long term development tasks as necessary
• Feature / improvement request is received
• UX team evaluates potential solutions to the
described problem
10. CRYENGINE V: UI Update
Goals
• Good performances
• Simplify UI extensibility of the Editor
• Provide a Consistent and Professional look coherent across
all views and plugins
• Maintain constant Editor usability for any ongoing game
projects without sacrificing existing features
11. What can we do ?
• Create our own UI framework
• Use an existing one
12. Answer: QT Framework !
• Good documentation
• Used in many real world applications
• QT APIs and programming model are well written and
easy to use
• Supports multiple platforms
• Source Code is available
13. MFCToolsPlugin
• A QT window that hosts an MFC developed Tool
• Handles messages from QT and MFC event loop
• We can support MFC tools in the new QT based
editor !!
• Common Backend between APIs
• Allows incremental switch
18. Asset System
• New Asset System introduces a common interface
for asset handling and management
• Base asset classes specialized for each asset type
• An asset type also has a mapped asset editor that
we can use to edit it
• Now we can work on integrating a SCS
19. Asset Browser
• Handles all the asset browsing related
operations to avoid duplication in each editor
• The asset browser can be docked with each
asset editor and has powerful filtering options
to allow customization by designers
• Asset “Instant Editing”, an asset editor syncs to
the contents of an Asset Browser
22. Takeaways
• Why we rebuilt our tools
• The APIs we used
• Importance of an UX driven workflow
• How it pays off
23. We’re looking for Junior Tools
Engineers
•Specially tailored to Software Engineers with little to
no professional experience
•Willing to relocate to Frankfurt am Main, Germany
Hello everyone good morning, welcome to Codemotion day 2. I’m Alessandro Osima, I work for Crytek, a game company based in Frankfurt, my role is Tools Engineer for CRYENGINE. Specifically I work for Sandbox, CE’s game editor
First a brief overview on sandbox and how it evolved since it was created, just to give you a bit of context
Then I’m going to talk about how workflow (how we make tools and APIs and how we decide the way they should behave). I have some use cases from the latest version to help explain my points
Sandbox is a CryEngine game editor, it was created 15 years ago for the first Far Cry and has continuously evolved from that. Many many games were created with it, ranging from Crysis to The Climb (the VR game). As most game editor, Sandbox is coded mostly in C++ and offers a set of WYSIWYG tools like material editor, trackview (used to create cutscenes), particle editor, ecc. We also offers an extensive set of python bindings that tech artists can use to script simple tools. Current version runs on win64 (32 has been deprecated lately).
CE Game Editor
Has been in dev since Crytek was founded in 1999, almost 19 years, and was used to make every Crytek game like Ryse, Crysis, Far Cry. We also have games from liceensee like KCD developed by warhorse
Sandbox is CryEngine game editor, it was created 15 years ago for the first Far Cry and has continuously evolved from that. Many many games were created with it, ranging from Crysis to The Climb (the VR game). As most game editor, Sandbox is coded mostly in C++ and offers a set of WYSIWYG tools like material editor, trackview (used to create cutscenes), particle editor, ecc. We also offers an extensive set of python bindings that tech artists can use to script simple tools. Current version runs on win64 (32 has been deprecated lately). You can find the source code with most of the branches we currently work in our github repository
Editor is made in C++ (you can find the source code on the internet)
Core API that implements basic things like Asset Management, Windowing and Serialization, Plugin management
Every tool that we have in Sandbox is actually a plugin
At startup the engine loads all plugins
Flexible approach, allows game team to implement their own plugins
There are python bindings to all APIs so that you can make your own console commands, scripts and even tools
First publicly available iteration was the one used to make Far Cry and all expansions. Was released as modding tool
Developed in C++ and MFC
MFC good choice at the time, supported and fast to use
Simple, monolithic level editor and very basic tools
Developed to focus on one single game in 2004
Engine, Editor and game code is in the same directory tree
After Far Cry they took latest stable version and readapted it for Crysis. New tools where added (Crysis and expansions, already had primitive versions of material editor, flowgraph, trackview, character editor, ecc) to support designers working on Crysis
From Crysis 2 onward. Up until now it sandbox was available only as a modding tool for Crysis and Far Cry. A Free SDK for non commercial games was released in 2011
Dev model based on improving on previous game editor and engine code kept going on (and working) through many games. Basically you get previous game stable version and keep working on from there
By the end of development cycle of 3 Sandbox team knew we had some areas that could be improved:
Ux experience: slow iteration times for some tools, not easy to understand workflow
API: Stability, Performances and Core
Tools were growing more complex and API does not scale
Performance Issues
Inconsistent handling of data, result of fragmented tools development over the years
So how did we move on to fix these issues.
First of all we decided to revise the approach we had on tools design focusing more strongly on UX
Then to fix our issues we had to refactor our UI Framework
And lastly a more coherent way to handle data management was needed.
To have consistent looking and behaving tools we need a dev process that focuses on UX first
First of all we need to have a “vision” of where and how the editor is going to evolve in the next 3 years, this way we can determine long and short term tasks
UX/UI team does user research, prototypes possible options and arrives to a solution
Ex: Long term Source control, short term: dependency handling.
Same workflow is applied to feature requests from other departments
Until 3.8 Sandbox used MFC to handle the UI side of the editor. Problem is that Microsoft is not developing MFC anymore, also MFC has quite a complicated (and ugly) programming model, developing good, extensive UI with it is quite hard to do and does not lead to consistent visual appearance. Moreover MFC is Windows only.
MFC has a pretty outdated and complex programming model
Making UIs is not easy nor leads to good and consistent UI
And it’s not multiplatform
Performant !!
Can handle a LOT of data, Assets, Widgets, ecc
Extensible and Stylable
What kind of option did we have at this point ? Either we could roll out our own UI framework or use an existing one. A custom solution does allow nice flexibility and we have full ownership of it, but upfront development cost is very high and it would require a big team
So what else can we do ? Use an existing API !! QT offers a multi platform battle tested framework with good UI programming patterns (Model View Controller), good documentation, debugging tools (GammaRay) and source code . Latest version also includes python bindings which we can easily integrate with our existing python API.
Currently (5.6) most tools, with Mannequin editor being the biggest omission have a QT version. This way we can still support most of the tools Sandbox previously did (and even improve the backends) while implementing the new ones. This allows us a very productive workflow were a tool UI and UX is created from scratch with a detailed design pass. In general while designers work on UX we first improve current tools backed and then we move to implementation as soon as design is ready
This is an example of an Asset Editor used toghether with an Asset Browser. For example AB can be set to only show asset of type material, recursively or not. An Asset editor with instant editing enabled automatically syncs to the latest asset selected in an asset browser.
This is an example of an Asset Editor used toghether with an Asset Browser. For example AB can be set to only show asset of type material, recursively or not. An Asset editor with instant editing enabled automatically syncs to the latest asset selected in an asset browser.
Very flexible filtering system that allows the Asset browser to be used proficiently in each asset editor
Very flexible filtering system that allows the Asset browser to be used proficiently in each asset editor