SlideShare a Scribd company logo
DEV TIPS FOR STARTING
NEW UNITY PROJECTS
1
DUBLIN UNITY
USER GROUP
MEETUP SEPTEMBER 2015
BYDOMINIQUEBOUTIN
CTO@DIGITGAMESTUDIOS
AGENDA
– About Me
– About Digit
– High Level Game Dev Process
– Unity As A Platform
– App Code Organisation
– App Flows
– App Flow Customisation
2
DEV TIPS FOR STARTING
NEW UNITY PROJECTS
ME
Dominique Boutin
CTO @ Digit Game Studios
Professional industry experience:
5 years: F2P game dev
15 years: game technology
Was Director of Dev&Tech @ Bigpoint HQ
Started using Unity with v2.0 in 2007
Was Virtools expert before switching to Unity
3
THE DIGIT TEAM
Founded in 2012
Ireland’s largest game developer, based in the center of
Dublin.
World leading team of engineers, artists and game
developers.
Combined experience of launching 100+ titles on Mobile,
Browser, PC and Console.
Experts in MMO strategy games and high fidelity mobile
game development.
Staff of ~ 35
4
Digit’s first title is on 5 platforms and everybody plays in the same big world !
COMING SUMMER 2016
6
?
Digit’s second title is an iconic AAA-IP based mobile strategy MMO
Indie?
Decide: project for learning or project for publishing?
Do active risk managent:
reduce the risk to fail using a good approach
Key:
Move risks to very early stages of any project
(where it’s cheaper to handle)
HOW WE MAKE GAMES7
HIGH LEVEL GAME DEV PROCESS
HOW WE MAKE GAMES8
HIGH LEVEL GAME DEV PROCESS
Preproduction Production Release
Post
Release
Exploration
Validation
Core
definition
Stretch
goals
Tech Vertical Slice
First Playable
Tools
Team Rampup
Full Production
Alpha
Content Completed
Beta / Soft
Launch
Fine Tuning
Full Release
Hot fixes
New Content
New Gameplay
You don’t do FarCry3 for the Wii
Work and design for limitations of Unity and target platforms
Unity is closed source but
Very extensible and customisable
Not only for programmers: include designers, artists etc.
Unity promotes one way of doing but
Not always the best
But also allows to be used differently
9
UNITYAS PLATFORM
10
APP CODE ORGANISATION
RELATIONS INSIDE
YOUR CODE
– It’s about
• How do elements communicate with each other
or use each other
• Approach for references and dependencies
• Events vs direct usage / calls
• Avoiding processing overhead (GC, lookups etc)
– Also
• Code base easy to understand?
• Code base easy to extend or to refactor?
• Easy to debug?
• Testautomation possible?
11
APP CODE ORGANISATION
– Don’t follow industry recommendations blindly
• Programming cultures are too dogmatic
(smells, best practices, patterns, testdriven etc.)
• Some solutions should not be ported 1:1 into Unity
• Avoid heavy frameworks (MVC frameworks, dependency
injection frameworks etc)
– coding overhead and coding complication
= High friction of change as it leads to
= Low coder morale, especially for special cases
– You can achieve the same results much leaner
And with better performance and maintability
• Avoid over abstraction by having an interface for everything
Be pragmatic!
12
APP CODE ORGANISATION
At Digit
• Composition over inheritance (Has-a vs Is-a)
• Related topics are organised as groups and sub-groups via
namespaces and object composition
• Multi-Layered / -tiered APIs (think of Physics, Networking etc.)
– Don’t hide internals
– Instead layer APIs (internals, low level, service level)
• Use self-speaking names (that’s actually not easy)
• Comment smartly to avoid study of code context
• Rely on the programmer to do his job well:
Education over enforcement.
13
APP CODE ORGANISATION
At Digit
• One “singleton” called “Hub”
– Doesn’t do anything
– Initialised and populated at startup of the app
– High Level Topic-Groups
» Allows access all systems
» Use interfaces where stubbing/mocking for testing is desired but
don’t force it globally through the entire code base
– Only main thread usage
14
APP CODE ORGANISATION
At Digit
• Hub-Groups usually lead to systems related to the topic
– Easy to “dot” to what you are looking for e.g.
Hub.App.LifecycleManager
– Manually use interfaces for systems if you want stubbing/mocking for
testing but not recommended to force it as requirement
• Consider keeping a local reference to a system if it makes sense
• Expose C# Events for callbacks / signals related to the topic
15
APP CODE ORGANISATION
At Digit
• If you need decoupling consider using static c# events
– Plus usaging Code Generation to speedup creation of new events
16
APP CODE ORGANISATION
APP FLOWS
WHAT HAPPENS WHEN
17
GAME ENGINE CORE LOOP
18
Traditionally something like
*Nowadaysmoreparallelised
How do you organise your logic within a frame?
Network Physics Inputs
Game
Logic
Rendering
GAME SCRIPT LOGIC LOOP?
Main Logic
Managers
Cameras
19
Study:
Execution Order
of Events
http://docs.unity3d.c
om/Manual/Executio
nOrder.html
*system could have
been designed better
SCRIPT
EXECUTION
ORDER
SCRIPT EXECUTION ORDER
20
Use
• LateUpdate e.g. for updating camera movements
• Start to initialise and cache calculations or lookups
• Etc.
Also use Script Execution Order Settings
• http://docs.unity3d.com/Manual/class-ScriptExecution.html
• Run somelogic upfront or after everybody body else
• You can also use this to proxy events into your custom
framework via c# delegates in combination with non-
destructible Gos and layered scene management
CUSTOM APP FLOWS, INJECTION
21
– Permanently root app/hub manager script(s) into the
Unity app
• Use a base-scene for app management
– and scenes as layers via Application.LoadLevelAdditiveAsync
• Use DontDestroyOnLoad on the managing GameObjects
• Note to SDK developers:
– Creating the persisting game object should be a service.
Assue the game is already doing it and just want to pass
gameobject or events along
CUSTOM APP FLOWS, INJECTION
22
– Some unity APIs work with coroutines
• Make a coroutine starter component available that sits on
your main app / Hub game object
• And can be passed into your systems
e.g. for doing Web-Requests
CUSTOM APP FLOWS, INJECTION
23
– Do you own event pump or
– Forward Unity events into your custom c# framework
(if wanted)
• Expose events e.g. via c# delegate to your framework
• Not recommended:
Specialise MonoBehaviour through inheritance
e.g. to call via reflection
– Usually hybrid approaches are used
CUSTOM APP FLOWS
24
– We recommend NodeCanavas (commerical product)
– Visual tools do help. Go for a healthy mix of code and
data driven tools
– We worked with the author to make it work on 5+
platforms
– Behaviour trees are not only good for AI. In general for
App flows quite useful (e.g. tutorials)
– Also comes with a visual state machine toolset
CUSTOM APP FLOWS
25
Consider using reactive patterns
• Automatic notification when a value changed incl. the
new value
– Score data changed: UI is updated automatically
• For a piece of logic: listen to what you are interested in
• A data field can have multiple subscribers
• If you go for c# delegates, use code gen
APPENDIX
• Use sub-folders (don’t pollute root)
• Use StandardAsset Folder to split into
compilation units to save compilation time
26
digitgaming.com
WE ARE HIRING !
https://www.digitgaming.com/careers/

More Related Content

What's hot

RAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App TetheringRAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
Embarcadero Technologies
 
LUMIA APP LAB #15: USING THE NOKIA IMAGING SDK
LUMIA APP LAB #15: USING THE NOKIA IMAGING SDKLUMIA APP LAB #15: USING THE NOKIA IMAGING SDK
LUMIA APP LAB #15: USING THE NOKIA IMAGING SDK
Microsoft Mobile Developer
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native App
Ryo Jin
 
3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases
Drew Hannay
 
Build a Large Scale In-House Test Lab for Mobile Apps
Build a Large Scale In-House Test Lab for Mobile AppsBuild a Large Scale In-House Test Lab for Mobile Apps
Build a Large Scale In-House Test Lab for Mobile Apps
Bitbar
 
Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...
Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...
Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...
Niklas Heidloff
 
PulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ EvernotePulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ Evernote
Chris Traganos
 
Flutter introduction
Flutter introductionFlutter introduction
Flutter introduction
SheilaJimenezMorejon
 
Ci/CD Android
Ci/CD AndroidCi/CD Android
Ci/CD Android
rendra toro
 
Cross Platform Application Development Using Flutter
Cross Platform Application Development Using FlutterCross Platform Application Development Using Flutter
Cross Platform Application Development Using Flutter
Abhishek Kumar Gupta
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for business
Bartosz Kosarzycki
 
Phonegap presentation
Phonegap presentationPhonegap presentation
Phonegap presentation
Atilla Özgür
 
Rendra Toro - Model View Presenter
Rendra Toro - Model View PresenterRendra Toro - Model View Presenter
Rendra Toro - Model View Presenter
Dicoding
 
They Ain't Gonna Read It!
They Ain't Gonna Read It!They Ain't Gonna Read It!
They Ain't Gonna Read It!
Katarzyna Zofia Pawlak
 
IBM Collaboration Solutions Community Meeting 11/11 - OpenNTF
IBM Collaboration Solutions Community Meeting 11/11 - OpenNTFIBM Collaboration Solutions Community Meeting 11/11 - OpenNTF
IBM Collaboration Solutions Community Meeting 11/11 - OpenNTF
Niklas Heidloff
 
Ionic in 30
Ionic in 30Ionic in 30
Ionic in 30
Mike Hartington
 
Quality in dev ops east 2017
Quality in dev ops east 2017Quality in dev ops east 2017
Quality in dev ops east 2017
Amir Rozenberg
 
Flutter Bootcamp
Flutter BootcampFlutter Bootcamp
OpenNTF.Org Third Generation
OpenNTF.Org Third GenerationOpenNTF.Org Third Generation
OpenNTF.Org Third Generation
Niklas Heidloff
 

What's hot (20)

RAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App TetheringRAD in Action: Building Connected Apps with Bluetooth and App Tethering
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
 
LUMIA APP LAB #15: USING THE NOKIA IMAGING SDK
LUMIA APP LAB #15: USING THE NOKIA IMAGING SDKLUMIA APP LAB #15: USING THE NOKIA IMAGING SDK
LUMIA APP LAB #15: USING THE NOKIA IMAGING SDK
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native App
 
3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases
 
Build a Large Scale In-House Test Lab for Mobile Apps
Build a Large Scale In-House Test Lab for Mobile AppsBuild a Large Scale In-House Test Lab for Mobile Apps
Build a Large Scale In-House Test Lab for Mobile Apps
 
Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...
Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...
Ad111 Lotusphere 2011 - Developing Mobile Apps Rapidly for WebKit Browsers Us...
 
PulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ EvernotePulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ Evernote
 
Flutter introduction
Flutter introductionFlutter introduction
Flutter introduction
 
Ci/CD Android
Ci/CD AndroidCi/CD Android
Ci/CD Android
 
Cross Platform Application Development Using Flutter
Cross Platform Application Development Using FlutterCross Platform Application Development Using Flutter
Cross Platform Application Development Using Flutter
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for business
 
Phonegap presentation
Phonegap presentationPhonegap presentation
Phonegap presentation
 
Rendra Toro - Model View Presenter
Rendra Toro - Model View PresenterRendra Toro - Model View Presenter
Rendra Toro - Model View Presenter
 
They Ain't Gonna Read It!
They Ain't Gonna Read It!They Ain't Gonna Read It!
They Ain't Gonna Read It!
 
IBM Collaboration Solutions Community Meeting 11/11 - OpenNTF
IBM Collaboration Solutions Community Meeting 11/11 - OpenNTFIBM Collaboration Solutions Community Meeting 11/11 - OpenNTF
IBM Collaboration Solutions Community Meeting 11/11 - OpenNTF
 
AugustBeyerResume
AugustBeyerResumeAugustBeyerResume
AugustBeyerResume
 
Ionic in 30
Ionic in 30Ionic in 30
Ionic in 30
 
Quality in dev ops east 2017
Quality in dev ops east 2017Quality in dev ops east 2017
Quality in dev ops east 2017
 
Flutter Bootcamp
Flutter BootcampFlutter Bootcamp
Flutter Bootcamp
 
OpenNTF.Org Third Generation
OpenNTF.Org Third GenerationOpenNTF.Org Third Generation
OpenNTF.Org Third Generation
 

Similar to Dublin Unity User Group Meetup Sept 2015

IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
OpenWhisk
 
IBM Bluemix Openwhisk
IBM Bluemix OpenwhiskIBM Bluemix Openwhisk
IBM Bluemix Openwhisk
Sonia Baratas Alves
 
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN ControllersSummit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
OPNFV
 
PureApplication: Devops and Urbancode
PureApplication: Devops and UrbancodePureApplication: Devops and Urbancode
PureApplication: Devops and Urbancode
John Hawkins
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
Heiko Voigt
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
Mirco Hering
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
Splunk
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Pôle Systematic Paris-Region
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
Angus Fox
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
Splunk
 
Taking your code to production
Taking your code to productionTaking your code to production
Taking your code to production
muayyad alsadi
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
LOGINPHP360
 
Efficient platform engineering with Microk8s & gopaddle.pdf
Efficient platform engineering  with  Microk8s & gopaddle.pdfEfficient platform engineering  with  Microk8s & gopaddle.pdf
Efficient platform engineering with Microk8s & gopaddle.pdf
Vinothini Raju
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
LOGINPHP360
 
Climberreport
ClimberreportClimberreport
Climberreport
LuckyTolani1
 
Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...
Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...
Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...
BrianFraser29
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
Imam Raza
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
XPDays
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Marcin Grzejszczak
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
Ambientia
 

Similar to Dublin Unity User Group Meetup Sept 2015 (20)

IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
 
IBM Bluemix Openwhisk
IBM Bluemix OpenwhiskIBM Bluemix Openwhisk
IBM Bluemix Openwhisk
 
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN ControllersSummit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
 
PureApplication: Devops and Urbancode
PureApplication: Devops and UrbancodePureApplication: Devops and Urbancode
PureApplication: Devops and Urbancode
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
 
Taking your code to production
Taking your code to productionTaking your code to production
Taking your code to production
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
 
Efficient platform engineering with Microk8s & gopaddle.pdf
Efficient platform engineering  with  Microk8s & gopaddle.pdfEfficient platform engineering  with  Microk8s & gopaddle.pdf
Efficient platform engineering with Microk8s & gopaddle.pdf
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
 
Climberreport
ClimberreportClimberreport
Climberreport
 
Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...
Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...
Brisbane MuleSoft Meetup 2023-03-22 - Anypoint Code Builder and Splunk Loggin...
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 

Recently uploaded

Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 

Recently uploaded (20)

Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 

Dublin Unity User Group Meetup Sept 2015

  • 1. DEV TIPS FOR STARTING NEW UNITY PROJECTS 1 DUBLIN UNITY USER GROUP MEETUP SEPTEMBER 2015 BYDOMINIQUEBOUTIN CTO@DIGITGAMESTUDIOS
  • 2. AGENDA – About Me – About Digit – High Level Game Dev Process – Unity As A Platform – App Code Organisation – App Flows – App Flow Customisation 2 DEV TIPS FOR STARTING NEW UNITY PROJECTS
  • 3. ME Dominique Boutin CTO @ Digit Game Studios Professional industry experience: 5 years: F2P game dev 15 years: game technology Was Director of Dev&Tech @ Bigpoint HQ Started using Unity with v2.0 in 2007 Was Virtools expert before switching to Unity 3
  • 4. THE DIGIT TEAM Founded in 2012 Ireland’s largest game developer, based in the center of Dublin. World leading team of engineers, artists and game developers. Combined experience of launching 100+ titles on Mobile, Browser, PC and Console. Experts in MMO strategy games and high fidelity mobile game development. Staff of ~ 35 4
  • 5. Digit’s first title is on 5 platforms and everybody plays in the same big world !
  • 6. COMING SUMMER 2016 6 ? Digit’s second title is an iconic AAA-IP based mobile strategy MMO
  • 7. Indie? Decide: project for learning or project for publishing? Do active risk managent: reduce the risk to fail using a good approach Key: Move risks to very early stages of any project (where it’s cheaper to handle) HOW WE MAKE GAMES7 HIGH LEVEL GAME DEV PROCESS
  • 8. HOW WE MAKE GAMES8 HIGH LEVEL GAME DEV PROCESS Preproduction Production Release Post Release Exploration Validation Core definition Stretch goals Tech Vertical Slice First Playable Tools Team Rampup Full Production Alpha Content Completed Beta / Soft Launch Fine Tuning Full Release Hot fixes New Content New Gameplay
  • 9. You don’t do FarCry3 for the Wii Work and design for limitations of Unity and target platforms Unity is closed source but Very extensible and customisable Not only for programmers: include designers, artists etc. Unity promotes one way of doing but Not always the best But also allows to be used differently 9 UNITYAS PLATFORM
  • 11. – It’s about • How do elements communicate with each other or use each other • Approach for references and dependencies • Events vs direct usage / calls • Avoiding processing overhead (GC, lookups etc) – Also • Code base easy to understand? • Code base easy to extend or to refactor? • Easy to debug? • Testautomation possible? 11 APP CODE ORGANISATION
  • 12. – Don’t follow industry recommendations blindly • Programming cultures are too dogmatic (smells, best practices, patterns, testdriven etc.) • Some solutions should not be ported 1:1 into Unity • Avoid heavy frameworks (MVC frameworks, dependency injection frameworks etc) – coding overhead and coding complication = High friction of change as it leads to = Low coder morale, especially for special cases – You can achieve the same results much leaner And with better performance and maintability • Avoid over abstraction by having an interface for everything Be pragmatic! 12 APP CODE ORGANISATION
  • 13. At Digit • Composition over inheritance (Has-a vs Is-a) • Related topics are organised as groups and sub-groups via namespaces and object composition • Multi-Layered / -tiered APIs (think of Physics, Networking etc.) – Don’t hide internals – Instead layer APIs (internals, low level, service level) • Use self-speaking names (that’s actually not easy) • Comment smartly to avoid study of code context • Rely on the programmer to do his job well: Education over enforcement. 13 APP CODE ORGANISATION
  • 14. At Digit • One “singleton” called “Hub” – Doesn’t do anything – Initialised and populated at startup of the app – High Level Topic-Groups » Allows access all systems » Use interfaces where stubbing/mocking for testing is desired but don’t force it globally through the entire code base – Only main thread usage 14 APP CODE ORGANISATION
  • 15. At Digit • Hub-Groups usually lead to systems related to the topic – Easy to “dot” to what you are looking for e.g. Hub.App.LifecycleManager – Manually use interfaces for systems if you want stubbing/mocking for testing but not recommended to force it as requirement • Consider keeping a local reference to a system if it makes sense • Expose C# Events for callbacks / signals related to the topic 15 APP CODE ORGANISATION
  • 16. At Digit • If you need decoupling consider using static c# events – Plus usaging Code Generation to speedup creation of new events 16 APP CODE ORGANISATION
  • 18. GAME ENGINE CORE LOOP 18 Traditionally something like *Nowadaysmoreparallelised How do you organise your logic within a frame? Network Physics Inputs Game Logic Rendering GAME SCRIPT LOGIC LOOP? Main Logic Managers Cameras
  • 20. SCRIPT EXECUTION ORDER 20 Use • LateUpdate e.g. for updating camera movements • Start to initialise and cache calculations or lookups • Etc. Also use Script Execution Order Settings • http://docs.unity3d.com/Manual/class-ScriptExecution.html • Run somelogic upfront or after everybody body else • You can also use this to proxy events into your custom framework via c# delegates in combination with non- destructible Gos and layered scene management
  • 21. CUSTOM APP FLOWS, INJECTION 21 – Permanently root app/hub manager script(s) into the Unity app • Use a base-scene for app management – and scenes as layers via Application.LoadLevelAdditiveAsync • Use DontDestroyOnLoad on the managing GameObjects • Note to SDK developers: – Creating the persisting game object should be a service. Assue the game is already doing it and just want to pass gameobject or events along
  • 22. CUSTOM APP FLOWS, INJECTION 22 – Some unity APIs work with coroutines • Make a coroutine starter component available that sits on your main app / Hub game object • And can be passed into your systems e.g. for doing Web-Requests
  • 23. CUSTOM APP FLOWS, INJECTION 23 – Do you own event pump or – Forward Unity events into your custom c# framework (if wanted) • Expose events e.g. via c# delegate to your framework • Not recommended: Specialise MonoBehaviour through inheritance e.g. to call via reflection – Usually hybrid approaches are used
  • 24. CUSTOM APP FLOWS 24 – We recommend NodeCanavas (commerical product) – Visual tools do help. Go for a healthy mix of code and data driven tools – We worked with the author to make it work on 5+ platforms – Behaviour trees are not only good for AI. In general for App flows quite useful (e.g. tutorials) – Also comes with a visual state machine toolset
  • 25. CUSTOM APP FLOWS 25 Consider using reactive patterns • Automatic notification when a value changed incl. the new value – Score data changed: UI is updated automatically • For a piece of logic: listen to what you are interested in • A data field can have multiple subscribers • If you go for c# delegates, use code gen
  • 26. APPENDIX • Use sub-folders (don’t pollute root) • Use StandardAsset Folder to split into compilation units to save compilation time 26
  • 27. digitgaming.com WE ARE HIRING ! https://www.digitgaming.com/careers/