This document provides tips for organizing code in new Unity projects. It recommends using a hub manager script to organize logic into groups and namespaces. Script execution order and custom app flows using coroutines and events are also discussed. Code should be organized pragmatically with self-speaking names and smart commenting rather than following dogmas. Behavior trees and reactive patterns can help structure application logic and data flow.
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...VMware Tanzu
SpringOne Platform 2018
Iterating For Success: A Case Study in Remote Paired Programming, The Evolution of a Dream With an International Twist
Kathy Ellison, CoreLogic; Michael Stuart, CoreLogic
Merge hells!! feature toggles to the rescue - Presented @ Agile TorontoLeena N
Have you ever wondered how Amazon does deployments in every 11 seconds? Have you ever wondered how frequently Google Chrome updates?
Compare that with an enterprise product you are using or the banking application that you use, it takes weeks or even months for an update. The assumption is that frequent releases are possible for Googles or Amazons or Unicorns. It is not for others.
This talk is about why that assumption is wrong. It can be done anywhere, with enough focus and investment for the Continuous Delivery pipeline to make sure that every commit is releasable or deployable.
And fundamental to Continuous Delivery is Continuous Integration. Continuous Integration guarantees every change committed to the repository is tested and reported about production readiness. And Feature Toggle is for turning features on/off depending upon certain conditions. This opens the opportunity to test certain features quickly with few users for experimentation and learning.
Feature branching has been popular for long, but everyone knows about the “code merge hell”, a common issue because of long-lived branches or infrequent integration. If the team is spending time in fixing the merge hells and checking what part of the code needs to be merged, then it is not the efficient use of human talent.
Overview of the pieces needed to continuously provide and SDK or API Client from a Swagger API specification, also showing tools for the .NET Platform.
This Slide Deck is from a Lightning talk at Xamarin Meetup Munich from April 12, 2017
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...VMware Tanzu
SpringOne Platform 2018
Iterating For Success: A Case Study in Remote Paired Programming, The Evolution of a Dream With an International Twist
Kathy Ellison, CoreLogic; Michael Stuart, CoreLogic
Merge hells!! feature toggles to the rescue - Presented @ Agile TorontoLeena N
Have you ever wondered how Amazon does deployments in every 11 seconds? Have you ever wondered how frequently Google Chrome updates?
Compare that with an enterprise product you are using or the banking application that you use, it takes weeks or even months for an update. The assumption is that frequent releases are possible for Googles or Amazons or Unicorns. It is not for others.
This talk is about why that assumption is wrong. It can be done anywhere, with enough focus and investment for the Continuous Delivery pipeline to make sure that every commit is releasable or deployable.
And fundamental to Continuous Delivery is Continuous Integration. Continuous Integration guarantees every change committed to the repository is tested and reported about production readiness. And Feature Toggle is for turning features on/off depending upon certain conditions. This opens the opportunity to test certain features quickly with few users for experimentation and learning.
Feature branching has been popular for long, but everyone knows about the “code merge hell”, a common issue because of long-lived branches or infrequent integration. If the team is spending time in fixing the merge hells and checking what part of the code needs to be merged, then it is not the efficient use of human talent.
Overview of the pieces needed to continuously provide and SDK or API Client from a Swagger API specification, also showing tools for the .NET Platform.
This Slide Deck is from a Lightning talk at Xamarin Meetup Munich from April 12, 2017
Watch the webinar on demand at: http://forms.embarcadero.com/RADInActionBluetoothTethering
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
Al Mannarino - Embarcadero Technologies
Wednesday, February 25, 2015
Join Embarcadero Technologies' Al Mannarino for a presentation and demonstration on how App Tethering and Bluetooth can be used to create exciting and new Internet of Things (IoT) solutions with distributed, connected apps.
Useful IoT apps are not stand-alone mobile apps, but are distributed over several tiers, gadgets and devices such as operating system platforms including Windows, Mac, iOS, Android, as well as middle-ware, cloud, servers, and enterprise services. Bluetooth integrates IoT into an app solution. With App Tethering you can also breathe new life into existing desktop applications by extending them to include IoT.
Here's what you will learn:
1) Capture Bluetooth LE data directly from a temperature and heart rate sensor
2) Use App Tethering to build a connected app and create a distributed IoT solution
3) Analyze the data lifecycle of an IoT solution to understand the possible data management and app logic tiers
Virtually all industries can immediately benefit from building connected apps, such as retail, food services, health care, manufacturing and industrial automation, and the applications are limitless!
Watching this video will provide you with valuable information that will help you deliver highly innovative IoT solutions that your users and customers will love.
The Nokia Imaging SDK is a code library that helps developers work efficiently with images captured and stored by phones running Microsoft Windows Phone 8. In this Lumia App Labs webinar, we demonstrate the basics of working with the SDK. We provide a product overview and show you how to download the SDK and set up your development environment. We also demonstrate practical ways to apply effects and filters in your imaging apps; share tips and tricks to help you optimise app performance; and provide links to resources that you can use to make the most of your imaging-app projects.
For detailed documentation on the Nokia Imaging SDK, see http://developer.nokia.com/Resources/Library/Lumia/#!nokia-imaging-sdk.html
For more details about developing for Nokia Lumia smartphones visit http://www.developer.nokia.com/windowsphone
Check out details of the other Lumia App Labs, including the future schedule, here: http://www.developer.nokia.com/Develop/Windows_Phone/Learn/
Continuous integration is old hat in the web world, but it’s still rare for native mobile apps. For true continuous integration, we ship every commit directly to production – but this is clearly not realistic in the world of native apps, where binaries must be published in the App Store (with Apple’s week-long review process) and Google Play, then downloaded by members.
On the engineering side, we needed an aggressive goal to ensure we didn’t fall back into the pattern of manual verification of each release. We also wanted our product partners to be free to ship as often as they want (without annoying members of course!). We settled on a rule that we call “3x3”.
Build a Large Scale In-House Test Lab for Mobile AppsBitbar
Watch a live presentation at http://offer.bitbar.com/build-a-large-scale-in-house-test-lab-for-mobile-apps
Mobile app development relies on agile methodology pretty well. This means companies building their apps and game for Android and iOS are heavily using agile methods in their daily doings, but also in technology that enables them to do daily builds and enable instant testing as part of the development. This webinar focus on in-house test labs and explains how this sort of environment can be built.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
PulsoConf: Platform & Community - Dev Outreach @ EvernoteChris Traganos
Platform & Community: Developer Outreach at Evernote
Building a cloud platform for millions of users requires both a robust infrastructure and a solid network of devs using the API. Learn how Evernote supports startups around the world online and in person. From hackathons, meet ups, to workshops across Latin America - hear details on how to build trust and promote the best new apps from across the globe.
Flutter overview - advantages & disadvantages for businessBartosz Kosarzycki
After half a year experience with Fluttter, two internal projects and one commercial one, we'd like to share our view on what FLUTTER as a framework gives developers and businesses alike.
Presentation which I prepared for Atlassian Ecosystem Design Community meet up (May 2018). I had a pleasure to share my knowledge about UI copywriting and technical writing in Deviniti.
Flutter is Google's Open Source UI Software Development Kit that enables us to build cross-platform apps for Android, iOS, Linux, Mac, Windows, and Google Fuschia from a Single Codebase. With many companies switching over to a Flutter Codebase to hasten development time, reduce roles, and work from a single codebase, Flutter has been growing at an exponential rate in the market and will definitely expand even more in the upcoming times. Alibaba, Google Ads, Google Pay, Hamilton Musical are a few apps in the ever-expanding codebase of Flutter.
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...OpenWhisk
Learn more about the IBM Bluemix OpenWhisk, a serverless event-driven compute platform, which quickly executes application logic in response to events or direct invocations from web/mobile apps or other endpoints.
Watch the webinar on demand at: http://forms.embarcadero.com/RADInActionBluetoothTethering
RAD in Action: Building Connected Apps with Bluetooth and App Tethering
Al Mannarino - Embarcadero Technologies
Wednesday, February 25, 2015
Join Embarcadero Technologies' Al Mannarino for a presentation and demonstration on how App Tethering and Bluetooth can be used to create exciting and new Internet of Things (IoT) solutions with distributed, connected apps.
Useful IoT apps are not stand-alone mobile apps, but are distributed over several tiers, gadgets and devices such as operating system platforms including Windows, Mac, iOS, Android, as well as middle-ware, cloud, servers, and enterprise services. Bluetooth integrates IoT into an app solution. With App Tethering you can also breathe new life into existing desktop applications by extending them to include IoT.
Here's what you will learn:
1) Capture Bluetooth LE data directly from a temperature and heart rate sensor
2) Use App Tethering to build a connected app and create a distributed IoT solution
3) Analyze the data lifecycle of an IoT solution to understand the possible data management and app logic tiers
Virtually all industries can immediately benefit from building connected apps, such as retail, food services, health care, manufacturing and industrial automation, and the applications are limitless!
Watching this video will provide you with valuable information that will help you deliver highly innovative IoT solutions that your users and customers will love.
The Nokia Imaging SDK is a code library that helps developers work efficiently with images captured and stored by phones running Microsoft Windows Phone 8. In this Lumia App Labs webinar, we demonstrate the basics of working with the SDK. We provide a product overview and show you how to download the SDK and set up your development environment. We also demonstrate practical ways to apply effects and filters in your imaging apps; share tips and tricks to help you optimise app performance; and provide links to resources that you can use to make the most of your imaging-app projects.
For detailed documentation on the Nokia Imaging SDK, see http://developer.nokia.com/Resources/Library/Lumia/#!nokia-imaging-sdk.html
For more details about developing for Nokia Lumia smartphones visit http://www.developer.nokia.com/windowsphone
Check out details of the other Lumia App Labs, including the future schedule, here: http://www.developer.nokia.com/Develop/Windows_Phone/Learn/
Continuous integration is old hat in the web world, but it’s still rare for native mobile apps. For true continuous integration, we ship every commit directly to production – but this is clearly not realistic in the world of native apps, where binaries must be published in the App Store (with Apple’s week-long review process) and Google Play, then downloaded by members.
On the engineering side, we needed an aggressive goal to ensure we didn’t fall back into the pattern of manual verification of each release. We also wanted our product partners to be free to ship as often as they want (without annoying members of course!). We settled on a rule that we call “3x3”.
Build a Large Scale In-House Test Lab for Mobile AppsBitbar
Watch a live presentation at http://offer.bitbar.com/build-a-large-scale-in-house-test-lab-for-mobile-apps
Mobile app development relies on agile methodology pretty well. This means companies building their apps and game for Android and iOS are heavily using agile methods in their daily doings, but also in technology that enables them to do daily builds and enable instant testing as part of the development. This webinar focus on in-house test labs and explains how this sort of environment can be built.
Stay tuned and join our upcoming webinars at http://bitbar.com/testing/webinars/
PulsoConf: Platform & Community - Dev Outreach @ EvernoteChris Traganos
Platform & Community: Developer Outreach at Evernote
Building a cloud platform for millions of users requires both a robust infrastructure and a solid network of devs using the API. Learn how Evernote supports startups around the world online and in person. From hackathons, meet ups, to workshops across Latin America - hear details on how to build trust and promote the best new apps from across the globe.
Flutter overview - advantages & disadvantages for businessBartosz Kosarzycki
After half a year experience with Fluttter, two internal projects and one commercial one, we'd like to share our view on what FLUTTER as a framework gives developers and businesses alike.
Presentation which I prepared for Atlassian Ecosystem Design Community meet up (May 2018). I had a pleasure to share my knowledge about UI copywriting and technical writing in Deviniti.
Flutter is Google's Open Source UI Software Development Kit that enables us to build cross-platform apps for Android, iOS, Linux, Mac, Windows, and Google Fuschia from a Single Codebase. With many companies switching over to a Flutter Codebase to hasten development time, reduce roles, and work from a single codebase, Flutter has been growing at an exponential rate in the market and will definitely expand even more in the upcoming times. Alibaba, Google Ads, Google Pay, Hamilton Musical are a few apps in the ever-expanding codebase of Flutter.
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...OpenWhisk
Learn more about the IBM Bluemix OpenWhisk, a serverless event-driven compute platform, which quickly executes application logic in response to events or direct invocations from web/mobile apps or other endpoints.
Summit 16: NetIDE: Integrating and Orchestrating SDN ControllersOPNFV
NetIDE is a EU-funded project that is known to the OpenDaylight community, because we have contributed a component to the Beryllium release. However, the full NetIDE ecosystem is much more. It is an extended SDN controller framework that allows users to cherry-pick the best of breed both for the network facing controller and the SDN framework for applications. In addition it provides an application composition engine that allows network operators to introduce software development concepts like code reusability in their production cycle. In this talk, I will introduce the whole Network Engine as well as the NetIDE Eclipse plugin that allows us to create SDN applications, test them and run them on the NetIDE engine and reflect on why we contributed what we contributed to OpenDaylight.
Building a scalable app factory with Appcelerator PlatformAngus Fox
Sharing the challenged in building a Mobile Backend as a Service (MBaaS) platform for Appcelerator Alloy apps using Joomla and a whole host of development tools for a London based startup where I am CTO
Efficient platform engineering with Microk8s & gopaddle.pdfVinothini Raju
DevOps has evolved over these years and has presented us with a new set of challenges. We have more tools and complexity. This presentation will walk you thought -
* How we tackle the explosion of tools and complexity and add more value to business
* How platforms can help
* What challenge we face when we build a platform from scratch
* How a joint solution from Canonical MicroK8s and gopaddle can help.
Why is .Net Technology Recognised for Software Development?LOGINPHP360
NET framework provides increased application security as internet software is developed by ASP. NET which has Windows confirmation and configuration. Two advanced features Managed code and CLR provide safety options like code access security and role-based securi
In this presentation we'll explore the latest developments in MuleSoft's Anypoint Code Builder IDE and how it can help streamline your integration projects. We'll also dive into the exciting world of Splunk and demonstrate how to efficiently push your application logs to Splunk for real-time analysis and troubleshooting.
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
XP teams try to keep systems fully integrated at all times, and shorten the feedback cycle to minutes and hours instead of weeks or months. The sooner you know, the sooner you can adapt.
Watch our record for the webinar "Continuous Integration" to explore how Azure DevOps helps us in achieving continuous feedback using continuous integration.
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
“I have stopped counting how many times I’ve done this from scratch” - was one of the responses to the tweet about starting the project called Spring Cloud Pipelines. Every company sets up a pipeline to take code from your source control, through unit testing and integration testing, to production from scratch. Every company creates some sort of automation to deploy its applications to servers. Enough is enough - time to automate that and focus on delivering business value.
In this presentation, we’ll go through the contents of the Spring Cloud Pipelines project. We’ll start a new project for which we’ll have a deployment pipeline set up in no time. We’ll deploy to Cloud Foundry and check if our application is backward compatible so that we can roll it back on production.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
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 !
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