William Roberts Ryan Hipple

Slides:



Advertisements
Similar presentations
SharePoint Forms All you ever wanted to know about forms but were afraid to ask.
Advertisements

Building Localized Applications with Microsoft.NET Framework and Visual Studio.NET Achim Ruopp International Program Manager Microsoft Corp.
Tutorial 6: Managing Multiple Worksheets and Workbooks
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
A Guide to Oracle9i1 Creating an Integrated Database Application Chapter 8.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Unity 3D game IDE 1.  Unity is a multi-platform, integrated IDE for scripting games, and working with 3D virtual worlds  Including:  Game engine ▪
UFCFX5-15-3Mobile Device Development Android Development Environments and Windows.
Introduction to.Net and ASP.Net Course Introduction Build Your Own ASP.Net Website: Chapter 1 Microsoft ASP.Net Walkthrough: Creating a Basic Web Forms.
® IBM Software Group © 2009 IBM Corporation Rational Publishing Engine RQM Multi Level Report Tutorial David Rennie, IBM Rational Services A/NZ
What is QTP ► QTP stands QuickTest Professional ► It is an automated testing tool provided by HP/Mercury Interactive ► QTP integrates with other Mercury.
Scalable Game Development William Roberts Senior Game Engineer
Lecture Set 1 Part C: Understanding Visual Studio and.NET – Applications, Solutions, Projects (no longer used – embedded in Lecture Set 2A)
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
1.NET Web Forms Visual Studio © 2002 by Jerry Post.
Use CSS to Implement a Reusable Design Selecting a Dreamweaver CSS Starter Layout is the easiest way to create a page with a CSS layout You can access.
WDO-It! 102 Workshop: Using an abstraction of a process to capture provenance UTEP’s Trust Laboratory NDR HP MP.
Dissecting the Windows CE Build Process James Y. Wilson Principal Engineer, Windows Embedded MVP CalAmp, Inc. James Y. Wilson Principal Engineer, Windows.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files 8/10/ :35 PM.
Open project in Microsoft Visual Studio → build program in “Release” mode.
XP New Perspectives on Macromedia Dreamweaver MX 2004 Tutorial 5 1 Adding Shared Site Elements.
C Copyright © 2009, Oracle. All rights reserved. Using SQL Developer.
Indispensable tools for research at its best RefWorks 2.0 fundamental Alan Tang
ASP.NET 2.0 Mohammed Abdelhadi Developer.NET Evangelist Microsoft Corporation.
Day 1 Session 2. Setup & Installation
Getting Started with Dreamweaver
Building C# Applications
Mobile Device Development
Dive Into® Visual Basic 2010 Express
Patrick Desbrow, CIO & VP of Engineering October 29, 2014
CST 1101 Problem Solving Using Computers
Chapter 2: The Visual Studio .NET Development Environment
Autodesk Inventor 2008 Essentials Plus
INF230 Basics in C# Programming
Microsoft Access 2016 Simplify Data Entry with Forms
Working in the Forms Developer Environment
Creating a Basic Form Module
Introduction to ASP.NET 2.0
Introduction to Computer CC111
Lesson 3: Customizing Document Elements
Chapter 2 – Introduction to the Visual Studio .NET IDE
PVS-Studio static analyzer: advanced features
1. Introduction to Visual Basic
WORKSHOP 3 GSE IMPORT.
MonoGame and Windows 8.
HP C/C++ Remote developer plug-in for Eclipse
Social Media And Global Computing Introduction to Visual Studio
Chapter 2 – Introduction to the Visual Studio .NET IDE
Hands-on Introduction to Visual Basic .NET
Understanding the Visual IDE
Using Visual Studio and VS Code for Embedded C/C++ Development
ENDNOTE Software – The Basics
Tooling and Diagnostics
Using JDeveloper.
Getting Started with Dreamweaver
Microsoft PowerPoint 2007 – Unit 2
Teaching slides Chapter 6.
Teacher In-Service Day PowerPoint--Make it, Take it, Use it
Rational Publishing Engine RQM Multi Level Report Tutorial
Exploring Microsoft® Office 2016 Series Editor Mary Anne Poatsy
Martin MSBuild Martin
The Role of Command Line Compiler (csc.exe)
Overview of the IDE Visual Studio .NET is Microsoft’s Integrated Development Environment (IDE) for creating, running and debugging programs (also.
Games Development 2 Tools Programming
Overview of System Development for Windows CE.NET
Introduction to ASP.NET Parts 1 & 2
MS Confidential : SharePoint 2010 Developer Workshop (Beta1)
Presentation transcript:

William Roberts Ryan Hipple Scalable Game Development William Roberts Ryan Hipple

Schell Games – www.schellgames.com Scalable Game Development William Roberts Senior Game Engineer Schell Games – www.schellgames.com

The Monolithic Project Takes an extremely long time to import assets. Editor becomes unstable as the project size grows.

Scalable Game Development Unity Projects Art Pipeline Code Build Tools

Unity Project Structure

Typical Directory structure Unity       Entry Point Project       Project A       Project B       Project etc...   Code       DLL Library Project A       DLL Library Project B       DLL Library Project etc... BuildTools

'Entry Point' Project A single scene with a “main” game object. All of the DLL’s needed to run and build the game. A minimal amount of assets in the “Resources” directory.

Content Projects Content is split into multiple Unity projects. Each project contains a copy of the dll's. Similar assets are grouped together. All assets are packaged into asset bundles. Easy to rebuild portions of the project.

Art Pipeline Unity Projects Art Pipeline

Art Pipeline - Pros Only artists need copies of 3rd party art tools installed. Faster import times. Asset Database becomes corrupted less frequently.

Art Pipeline - Cons Goes against the standard Unity work flow. Causes some extra work for the 3D artists.

Code Projects Unity Projects Art Pipeline Code

Project Code Base - Pros Reusable core framework that can be shared between projects. Ability to use namespaces. Custom compiler preprocessor. Easily obfuscate code using professional tools.

Project Code Base - Cons Some of the Unity API methods no longer work as expected. MonoBehaviour visibility in inspector can become broken in certain scenarios. Editor cannot display source code documentation. May not play nice with certain export options (ie: Export to Flash).

Code Build Process Programmer selects “Build Solution” within the development studio of their choice. A special tool is executed to copy the projects output if the build was successful. Each assembly and debug database is automatically copied into each Unity project.

IDE Differences Build Events are not the same as Custom Commands. Visual Studio Build Events are essentially bat files that can be executed before or after a build.

IDE Differences MonoDevelop Custom Commands are single commands that are executed before or after a build.

IDE Differences Both MonoDevelop and Visual Studio will attempt to insert the same target import using a different Environment Variable into the C# project file.

Debug Databases The  program database (PDB) file is an proprietary format developed by Microsoft. The mono team decided to create their own format (MDB). We need to generate MDB files in order to debug our assemblies.

Debugging External Assemblies OSX MonoDevelop is setup out of the box. Windows - 2 ways to make this work: Download and install the official Mono SDK (Easiest way) Modify the MonoDevelop configuration files to point to Unity’s Mono directory.

The Easy Way Grab  a copy of the Mono SDK from the official website. I would recommend using v2.6.1. http://mono-project.com/OldReleases Launch MonoDevelop and navigate to the “Tools->Preferences” menu.

The Slightly Harder Way Navigate to MonoDevelop configuration directory: Windows XP: C:\Documents and Settings\{UserName}\Application Data\MonoDevelop-Unity Windows Vista & 7: C:\Users\{UserName}\Application Data\MonoDevelop-Unity Create a new file in the directory named mono-runtimes.xml and copy the following XML into it: Note: If your Unity installation directory is non standard, you will need to change the path to reflect your own installation.

The Slightly Harder Way Open the "MonoDevelopProperties.xml" file and locate the "MonoDevelop.Ide.DefaultTargetRuntime" property. Change the value to be "Mono Unknown". Save the changes to the file.

The Slightly Harder Way

Debugging Projects Open the Unity Project you wish to debug. Open MonoDevelop and load the Solution file for the .NET Library Projects. In the  MonoDevelop IDE Select "Run->Attach To Process".

Debugging Projects Select the Unity Editor process and click the "Attach" button. Set breakpoints in your code. Finally click the "Play" button in the Unity editor!

Build Tools Unity Projects Art Pipeline Code Build Tools

Build Manager

Build Manager Built on top of Microsoft .NET Framework. Utilizes the MSBuild API to build Visual Studio solutions and projects. Launches Unity in command line mode to build each projects asset bundles. Monitors the Unity Editor log file for changes and displays it in real time. Features an XML script file that allows us to customize the build process. Pre-build and post-build commands can be issued.

Asset Bundle Builder

Thanks! William Roberts roberts@schellgames.com http://www.williamroberts.net

Ryan Hipple Game Engineer Schell Games – www.schellgames.com Scalable Game Development Ryan Hipple Game Engineer Schell Games – www.schellgames.com

Scalable Game Development Multi-platform Externalizing Data Better OnGUI Editor Tools

Multi-platform Development

Screen Resolutions 480x320 760x456 800x480 854x480 960x640

Dynamic Rectangle Percentages Parenting Anchoring Min / Max values

#if #if UNITY_WEBPLAYER #if UNITY_IPHONE #if UNITY_ANDROID || UNITY_IPHONE && !UNITY_EDITOR #if UNITY_ANDROID #if UNITY_WTF #if UNITY_WEBPLAYER && ! UNITY_EDITOR #if UNITY_EDITOR

Externalizing Data Multi-platform Externalizing Data

Externalizing Data Const files Game Object + Inspector ScriptableObject

Defining a ScriptableObject

Creating a ScriptableObject

Loading a ScriptableObject Reference in Inspector Resources.Load Singleton with Resources.Load Asset Bundle

What do I put in there? Config Data Designer Data Localized text GUI Data

Better OnGUI Multi-platform Externalizing Data Better OnGUI

Separate the Layout Each ”UI Page” gets a corresponding layout class ”UI Page” loads layout object and uses it to draw Tweak in inspector Make an artist do it

Separate the Styles Same as layout, but with GUIStyles Each UI Page gets a class defining a list of GuiStyles Organize GUIStyles in groups Reduce GUISkins

Why not GUISkins? ”Custom Styles” do not scale well String lookup Source control Slow to edit No Sorting String lookup No auto-complete / checking Slow

35% Faster

Video Demo

Separate the Content I Already told you how to create it Now you know how to display it Tweak it with the Inspector... right?

Editor Tools Multi-platform Externalizing Data Better OnGUI

Building Design Tools Awesome Juice Programmer Tears

Scalable Game Development Designer independence with tools Artist independence with UI separation Code flexibility from data externalization Streamline multi-platform development

Thanks! William Roberts - roberts@schellgames.com Ryan Hipple - ryan@schellgames.com slides – unite.schellgames.com