An overview of Apple's game development technologies, followed up by tips and techniques for using UIKit for game development. The later third of the talk is an overview of games I've worked on in UIKit.
This document summarizes the steps to build a simple iOS game called KillTime using the Cocos2D game framework. It discusses setting up the project, adding a background, player character and enemy targets, detecting touches to shoot bullets, checking for collisions, animating sprites, and tracking the body count with labels and sound effects. The document provides code snippets to implement the game's core functionality and gameplay using Cocos2D concepts like scenes, layers, sprites, actions and the touch handling API.
The document discusses tools for tabletop game design, specifically spreadsheets and two online tools - Playtest and Card Warden. It provides examples of how spreadsheets can be used to track game systems, components, and attributes for balancing purposes. Playtest allows importing a CSV file to generate card layouts while Card Warden facilitates playtesting digitally by shuffling, dealing and manipulating virtual decks. The document demonstrates these tools through examples from the author's games Memory Matters and Ship Deck.
The document introduces Generic Game Model (GGM), a collection of reusable classes for 2D game development in iOS using UIKit. GGM facilitates rapid prototyping by allowing developers to think in grid coordinates rather than pixels. It implements a common Model-View-Controller pattern for 2D games, with the model storing game state as integers in a multidimensional array and views displaying each state. GGM is available via CocoaPods and GitHub and includes base classes like GGM_BaseModel for saving game state and GGM_UIView for handling touch input and different grid types. The document provides a history of GGM's development and uses in several of the author's games starting in 2012.
Martin Grider has been writing one game idea per day in his game design journal since January 1st. So far he has over 112 entries in 16 weeks. Some benefits of this practice include reminding himself of past ideas, re-validating ideas, and representing himself as a game designer. He has created 2 digital prototypes and at least 4 board game ideas from this process. His goals for the future include creating more prototypes, analyzing trends in the types of ideas generated, and continuing the daily practice of writing game ideas.
Making A Game Engine Is Easier Than You ThinkGorm Lai
This is a talk I gave at the Develop Conference 2015 in Brighton. It is a an attempt at making a balanced talk on when it makes sense to make your own technology, and what it takes to get you there.
This document summarizes Christoph Becher's presentation about building games with Unity 3D. The presentation covers setting up an indie game studio, key considerations for teams of all sizes using Unity, and establishing pipelines and processes for managing assets and code across platforms and DLC. It emphasizes keeping projects organized and establishing automated workflows to simplify collaboration and releasing.
The document summarizes an introduction meeting to Unity3D game engine. It discusses what a game engine is and how Unity manages entities and subsystems. It then walks through exercises having attendees create and modify a spinning cube prefab to demonstrate core Unity concepts like hierarchies, components and scripting basics. The document stresses that the goal is to understand how to learn and explore Unity rather than fully learning game development.
The document provides an overview of Unity 3D, a popular game engine. It discusses Unity basics like installing Unity, the main interface, and components like scenes, game objects, and prefabs. It also covers scripting in Unity, importing and creating assets, and how to build and export games for different platforms. The document serves as an introduction to the Unity game engine for beginners.
This document contains information about Muhammad Maaz Irfan, including that he is a comic artist and final semester student of BSCS at Preston University Islamabad. It also provides recommendations for game development with Windows, lists some major game engines, and gives an overview of the Unity game engine including its features, assets store, project structure involving scenes and game objects/components, and 2D and 3D asset creation tools.
Unity is a multi-platform game development IDE that allows users to create 3D games and virtual worlds. It includes a game engine, script editor, 3D terrain editor, animation manager, and GUI system. Games made with Unity can be exported to run as native applications, web players, or on mobile platforms like iOS and Android. Unity uses a Mono compiler and allows scripting using JavaScript, C#, or Boo. Games are created by organizing 3D objects and scenes in a project.
The document discusses tools for making 3D games and focuses on Unity as a game engine. It provides an overview of Unity's features such as its 3D visual editor, physics and lighting systems, scripting, and asset store. It also discusses approaches to programming in Unity using components and game objects as well as 3D art creation tools like Blender that can be used. The document aims to visually teach Unity and shows examples of games that can be built with it like a target shooting game or infinite runner.
Video Game Development with Unity.
Présenté par David Taralla le 30 novembre 2016 aux Geeks Anonymes (https://www.facebook.com/GeeksAnonymesLiege/).
Unity 3D is a popular multi-platform game engine that has been used for over 10 years. It uses scenes to organize game levels and objects. Gameplay is created using game objects, components, transforms, lights, cameras, inputs, and triggers. Common tasks for a beginner project include creating a maze with a movable character controller and trigger that removes the floor.
The document provides an overview of Hakan Saglam's experience developing mobile games using Unity. It discusses why the company moved to using Unity from other game engines and frameworks, including its open source nature, strong community, and integrated development environment. It then covers various aspects of coding, testing, debugging, and profiling games within the Unity editor. It concludes by discussing continuous integration and deployment options and using Unity services.
This presentation is the Unity3D workshop head lines held by Amirkabir University of Technology in Tehran. An introduction to Unity3D game engine consist of history of video games, types of game engines and video game consoles. There are more details about interface and start working with Unity3D.
by: Mohsen Mirhoseini Argi
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsGerke Max Preussner
The document discusses the Slate UI framework in Unreal Engine, which provides tools for building user interfaces. It is written in C++ and works across platforms. Slate includes a widget library, tools for styling and input handling, and allows composing UI hierarchies through declarative syntax. It is used for interfaces like the Unreal Editor, games, and other applications. The document also covers Slate architecture, concepts, and provides an example of a custom button widget.
The document provides information about game development using Unity. It discusses concepts like game engines, Unity interface and components, character control, game design, gameplay, basic components, enemy AI, memory management and optimization. It also covers topics such as the anatomy of video games, the game development process, 2D and 3D art, what Unity is and why to use it, its interface and execution order of event functions. Additionally, it summarizes Mecanim workflow, asset preparation, terrain editing, adding water and skyboxes, importing assets, lightmapping, fog, game design, and enemy pathfinding using waypoints.
Getting to know unity, special thanks to JUST and my friend Ruba Al-Saa'di and Dr. Natheer.
We are waiting for Patented a small request caused a technology revolution.
Creating a serious game with the Unity 3D Game Engine and the importance of m...danielandlubo
This document discusses the importance of music in video games and provides a simple tutorial for creating original music using free software and samples. It explains that music helps adjust the player's mood and set the tone. Action games have energetic music while puzzle games have calmer music. The tutorial recommends the free software Audacity and sites with royalty-free samples. It describes basic steps like importing samples, editing volumes, and exporting the finished track.
The document discusses game engines. It begins by defining a game engine as a software framework for developing video games. It then covers various components of a typical game engine including the runtime architecture, tools and asset pipelines, common engine types, and popular game engines like Unreal Engine and Unity. The document emphasizes that game engines provide reusable tools and technologies to help speed up the game development process across multiple platforms.
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo YueJessica Tams
This document provides a brief history of user-generated content (UGC) in video games from early mods of games like Castle Wolfenstein in the 1980s to modern games that integrate UGC systems. It discusses how early games like Doom and Quake pioneered modding through add-on file formats. Over time, games incorporated more advanced modding tools, scripting languages, and content sharing platforms like Steam Workshop to better support UGC. The document also discusses challenges in bringing robust UGC systems to mobile games and how the speaker's company implemented UGC in their mobile game LEGO Cube through modular content packs, in-game editing tools, and a sharing platform.
The document discusses Unity's efforts to optimize code for WebGL deployment without plugins. It describes how Unity used the emscripten compiler to convert Unity code (written in C++) to asm.js for improved optimization in browsers. It also outlines Unity's development of the IL2CPP technology to convert .NET code like C# to JavaScript. With these approaches, Unity aims to continue supporting WebGL deployment across future versions like it did with previous Web Player versions.
Introduction to Unity3D and Building your First GameSarah Sexton
In Phase One, we will cover the basics of using the Unity editor’s interface, customizing the workspace, building a 3D environment, and adding sound effects.
In Phase Two, we will import a player character asset, learn about Animator Controllers, make animations, set up physics and gravity, and add player movement scripts.
In Phase Three, we will set up our Camera and write a script to make the camera follow our player character.
This document provides an overview of Cocos2D, an open source framework for building 2D games and other interactive applications. It discusses Cocos2D's scene graph structure, principal classes like CCNode and CCDirector, use of sprites and actions, and tools for working with Cocos2D like TexturePacker. It also compares building games with Cocos2D on iOS versus Android and introduces Cocos2D-X for cross-platform development and Cocos2D-HTML5 for web games.
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015Codemotion
Codemotion Roma 2015 - Unity 5 is here! The latest version of the industry-standard, cross-platform game engine brings a whole variety of new features and tools: Physically-Based Rendering, Reflection Probes, Global Illumination, Audio Mixing, Analytics, Game Recording and Social Media Sharing and many more! This talk will be a hands-on, in-editor demonstration of these new features and how they can easily be used to create beautiful and performant 3D and 2D games!
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...gamifi.cc
gamifi.cc team - Rudolf & Matej presented on local tech/mobile/games conference experience with Unity & game development in general.
We also list some other tools that might help you. First part covers business tips & reasons to use Unity.
- The document discusses using SpriteKit to create games for the Apple Watch. It provides details on the Apple Watch's hardware specifications and input methods.
- It introduces SpriteKit and how it can be used to create 2D games and animations. It then explains how SpriteKit works specifically for the Apple Watch, which has limitations due to its small screen size and power constraints.
- The presenter provides a quick demo of a SpriteKit game running on the Apple Watch and cautions that the Apple Watch may not be well suited as a primary gaming platform due to its constraints, but could work as an extension to games on other Apple devices.
Adventures in cross platform ConnectJS / TiConnect 2014Jason Kneen
The document discusses strategies for cross-platform mobile app development. It recommends separating costs by function and platform, helping designers understand platform differences, testing on multiple real devices, creating flexible layouts, using Alloy for code organization, optimizing apps for performance, and delivering apps over-the-air to users. The document emphasizes testing apps thoroughly and improving the design process through communication with designers.
This document contains information about Muhammad Maaz Irfan, including that he is a comic artist and final semester student of BSCS at Preston University Islamabad. It also provides recommendations for game development with Windows, lists some major game engines, and gives an overview of the Unity game engine including its features, assets store, project structure involving scenes and game objects/components, and 2D and 3D asset creation tools.
Unity is a multi-platform game development IDE that allows users to create 3D games and virtual worlds. It includes a game engine, script editor, 3D terrain editor, animation manager, and GUI system. Games made with Unity can be exported to run as native applications, web players, or on mobile platforms like iOS and Android. Unity uses a Mono compiler and allows scripting using JavaScript, C#, or Boo. Games are created by organizing 3D objects and scenes in a project.
The document discusses tools for making 3D games and focuses on Unity as a game engine. It provides an overview of Unity's features such as its 3D visual editor, physics and lighting systems, scripting, and asset store. It also discusses approaches to programming in Unity using components and game objects as well as 3D art creation tools like Blender that can be used. The document aims to visually teach Unity and shows examples of games that can be built with it like a target shooting game or infinite runner.
Video Game Development with Unity.
Présenté par David Taralla le 30 novembre 2016 aux Geeks Anonymes (https://www.facebook.com/GeeksAnonymesLiege/).
Unity 3D is a popular multi-platform game engine that has been used for over 10 years. It uses scenes to organize game levels and objects. Gameplay is created using game objects, components, transforms, lights, cameras, inputs, and triggers. Common tasks for a beginner project include creating a maze with a movable character controller and trigger that removes the floor.
The document provides an overview of Hakan Saglam's experience developing mobile games using Unity. It discusses why the company moved to using Unity from other game engines and frameworks, including its open source nature, strong community, and integrated development environment. It then covers various aspects of coding, testing, debugging, and profiling games within the Unity editor. It concludes by discussing continuous integration and deployment options and using Unity services.
This presentation is the Unity3D workshop head lines held by Amirkabir University of Technology in Tehran. An introduction to Unity3D game engine consist of history of video games, types of game engines and video game consoles. There are more details about interface and start working with Unity3D.
by: Mohsen Mirhoseini Argi
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsGerke Max Preussner
The document discusses the Slate UI framework in Unreal Engine, which provides tools for building user interfaces. It is written in C++ and works across platforms. Slate includes a widget library, tools for styling and input handling, and allows composing UI hierarchies through declarative syntax. It is used for interfaces like the Unreal Editor, games, and other applications. The document also covers Slate architecture, concepts, and provides an example of a custom button widget.
The document provides information about game development using Unity. It discusses concepts like game engines, Unity interface and components, character control, game design, gameplay, basic components, enemy AI, memory management and optimization. It also covers topics such as the anatomy of video games, the game development process, 2D and 3D art, what Unity is and why to use it, its interface and execution order of event functions. Additionally, it summarizes Mecanim workflow, asset preparation, terrain editing, adding water and skyboxes, importing assets, lightmapping, fog, game design, and enemy pathfinding using waypoints.
Getting to know unity, special thanks to JUST and my friend Ruba Al-Saa'di and Dr. Natheer.
We are waiting for Patented a small request caused a technology revolution.
Creating a serious game with the Unity 3D Game Engine and the importance of m...danielandlubo
This document discusses the importance of music in video games and provides a simple tutorial for creating original music using free software and samples. It explains that music helps adjust the player's mood and set the tone. Action games have energetic music while puzzle games have calmer music. The tutorial recommends the free software Audacity and sites with royalty-free samples. It describes basic steps like importing samples, editing volumes, and exporting the finished track.
The document discusses game engines. It begins by defining a game engine as a software framework for developing video games. It then covers various components of a typical game engine including the runtime architecture, tools and asset pipelines, common engine types, and popular game engines like Unreal Engine and Unity. The document emphasizes that game engines provide reusable tools and technologies to help speed up the game development process across multiple platforms.
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo YueJessica Tams
This document provides a brief history of user-generated content (UGC) in video games from early mods of games like Castle Wolfenstein in the 1980s to modern games that integrate UGC systems. It discusses how early games like Doom and Quake pioneered modding through add-on file formats. Over time, games incorporated more advanced modding tools, scripting languages, and content sharing platforms like Steam Workshop to better support UGC. The document also discusses challenges in bringing robust UGC systems to mobile games and how the speaker's company implemented UGC in their mobile game LEGO Cube through modular content packs, in-game editing tools, and a sharing platform.
The document discusses Unity's efforts to optimize code for WebGL deployment without plugins. It describes how Unity used the emscripten compiler to convert Unity code (written in C++) to asm.js for improved optimization in browsers. It also outlines Unity's development of the IL2CPP technology to convert .NET code like C# to JavaScript. With these approaches, Unity aims to continue supporting WebGL deployment across future versions like it did with previous Web Player versions.
Introduction to Unity3D and Building your First GameSarah Sexton
In Phase One, we will cover the basics of using the Unity editor’s interface, customizing the workspace, building a 3D environment, and adding sound effects.
In Phase Two, we will import a player character asset, learn about Animator Controllers, make animations, set up physics and gravity, and add player movement scripts.
In Phase Three, we will set up our Camera and write a script to make the camera follow our player character.
This document provides an overview of Cocos2D, an open source framework for building 2D games and other interactive applications. It discusses Cocos2D's scene graph structure, principal classes like CCNode and CCDirector, use of sprites and actions, and tools for working with Cocos2D like TexturePacker. It also compares building games with Cocos2D on iOS versus Android and introduces Cocos2D-X for cross-platform development and Cocos2D-HTML5 for web games.
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015Codemotion
Codemotion Roma 2015 - Unity 5 is here! The latest version of the industry-standard, cross-platform game engine brings a whole variety of new features and tools: Physically-Based Rendering, Reflection Probes, Global Illumination, Audio Mixing, Analytics, Game Recording and Social Media Sharing and many more! This talk will be a hands-on, in-editor demonstration of these new features and how they can easily be used to create beautiful and performant 3D and 2D games!
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...gamifi.cc
gamifi.cc team - Rudolf & Matej presented on local tech/mobile/games conference experience with Unity & game development in general.
We also list some other tools that might help you. First part covers business tips & reasons to use Unity.
- The document discusses using SpriteKit to create games for the Apple Watch. It provides details on the Apple Watch's hardware specifications and input methods.
- It introduces SpriteKit and how it can be used to create 2D games and animations. It then explains how SpriteKit works specifically for the Apple Watch, which has limitations due to its small screen size and power constraints.
- The presenter provides a quick demo of a SpriteKit game running on the Apple Watch and cautions that the Apple Watch may not be well suited as a primary gaming platform due to its constraints, but could work as an extension to games on other Apple devices.
Adventures in cross platform ConnectJS / TiConnect 2014Jason Kneen
The document discusses strategies for cross-platform mobile app development. It recommends separating costs by function and platform, helping designers understand platform differences, testing on multiple real devices, creating flexible layouts, using Alloy for code organization, optimizing apps for performance, and delivering apps over-the-air to users. The document emphasizes testing apps thoroughly and improving the design process through communication with designers.
Learn the aspects of building multi-screen and multi-form factor games for various devices ranging from mobiles, tablets to desktop. Also covered will be the aspects of design/development for web based games and standalone games for multiple devices. Understand how Adobe Flash Platform makes it extremely easy for you to build striking games, test and publish them for many devices.
How can we use Adobe Flash Stage 3D to make a multiplayer game on multiple devices using the same codebase?
This session will detail the challenges encountered when attempting to maintain high performance specifications on mobile devices and the guidelines used to succeed.
We will talk about the required production pipeline, provide performance tips and techniques, provide guidelines for deploying and debugging on iOS and Android and give an overview of the process, from start to finish
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...Gerke Max Preussner
Overview of the Unreal Motion Graphics (UMG) framework in Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
A high-level overview of Unreal Engine 4, its game framework, the Slate user interface library, Unreal Motion Graphics, and Editor and Engine extensibility. Presented at GDC Europe in Cologne, Germany.
Also includes bonus slides on concurrency and parallelism features, general tips for programmers and Epic's build and automation infrastructure.
Slides showing how to use Unity to build Google Cardboard Virtual Reality applications. From a series of lectures given by Mark Billinghurst from the University of South Australia.
Introduction to Blueprints in Unreal 4
(White Nights Conference Prague 2017)
The official conference website — http://wnconf.com
A short course on how to develop AR and VR experiences using Unity. Using Unity 2017.2, Google 1.100 VR SDK, and Vuforia. Taught by Mark Billinghurst on November 7th 2017.
This document discusses mixed reality for Windows 10 and developing applications for HoloLens. It covers key topics such as:
1. Popular VR headsets including Oculus Rift, HTC Vive, Google Cardboard, and Microsoft HoloLens.
2. Challenges in representing the human visual system in VR like barrel distortion and chromatic aberration.
3. Tools for developing mixed reality applications using Unity 3D and Visual Studio for the HoloLens platform.
Metodologías de desarrollo de software en GamingGlobant
Contenido:
Game Development
- Understanding
Game Dev en Globant
-Historia
-Tipos de Proyectos/Clientes
-End to End/Full SKU vs EA Game Modes projects
- Algunos títulos en los que Globant trabajó
Orador: CLAUDIO BASTOS
Technical Director @Globant Gaming Studio
Contact: [email protected]
Шлигін Олександр “Розробка ігор в Unity загальні помилки” GameDev Conference ...Lviv Startup Club
The document outlines common mistakes made in Unity game development projects. It covers mistakes in planning, development, asset settings, programming, CPU performance, GPU performance, and UI performance. Some key mistakes mentioned include lack of proper planning, not using version control or caching servers effectively, inefficient asset settings, unnecessary CPU usage from scripts, overdraw and complex shaders on mobile, and poorly optimized UI.
This document provides a summary of Chen-Han Tsai's work experience including team projects and personal projects. Some of the team projects include Monochrome (2015-2016) where Chen-Han worked on animation systems, UI, and gameplay in C++ and Unity. Personal projects include Rocky Ball (2015-present) which is a 2D game developed in Unreal Engine with UI, gameplay, and motion control for tablets.
This document provides an overview of an introduction to VR programming lecture. It introduces the course instructors, Prof. Shigekazu Sakai and Dr. Kobkrit Viriyayudhakorn, and outlines their respective course contents. It also covers an introduction to Unity and the basics of creating a script and attaching it to a game object in Unity. Some key points covered include an overview of VR devices and platforms, game design fundamentals like defining a problem and concept, and how to get started with programming in Unity using C#.
Rapid Game Development with RUby and Gosu – Ruby Manor 4benko
This document introduces rapid game development using the Ruby programming language and the Gosu game library. It discusses how games don't necessarily need to be coded in C++ and can be developed faster in other languages like Ruby to enable quicker prototyping. It provides an overview of the small and simple Gosu API, demonstrates basic game programming concepts like loading images, handling input, and using delta time for smooth animation. Finally, it outlines several common game development techniques that can be implemented in Ruby like tilemaps, finite state machines, pathfinding, and integrating a physics engine.
This presentation was broken into two parts. The first part covers various approaches to creating games on mobile platforms with some details specific to Windows 8. The second part covers strategies for creating successful mobile games including promotion and monetization strategies. While this talk was primarily to a Windows 8 developer audience, the talk was largely cross-platform focused, and parts of the second half on mobile strategy can apply to both apps as well as games.
Creating great Unity games for Windows 10 - Part 1Jiri Danihelka
Unity is a game engine that supports creating 2D and 3D games across many platforms. It uses a scene-based workflow where games are composed of multiple scenes. GameObjects are the basic elements in a scene and have components that define their properties and behaviors. Common components include renderers, audio sources, scripts, and physics components. Unity supports C# and JavaScript for scripting and has an asset store for additional content. It outputs code for multiple platforms through compilation.
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...Gerke Max Preussner
Ad
iOS Game Development With UIKit
1. iOS Game
Development with UIKit
Martin Grider
@livingtech
http://abstractpuzzle.com/ ~ http://chesstris.com/
September 30, 2015
2. Overview
• Who am I?
• Apple native game technologies
• UIKit Game Opinions
• Me & UIKit Games
• About GenericGameModel
3. Who am I?
Martin Grider
@livingtech
http://abstractpuzzle.com/
game developer
iOS contract / freelance
5. Why UIKit?
Got to have the Skillz to Pay the Bills!
• My Business:
I specialize in all native iOS development!
• Definitely Not: Android, Phone Gap, Java, PHP
• …and now not: Swift (maybe someday?!?)
• Quality:
10,000 hours to mastery (maybe debunked*)
• Enjoyment:
I do what I love.
* http://www.popsci.com/article/science/practice-not-important-thought-success-study-says
6. I ❤ UIKit ..?
• Yes! Maybe.
• Maybe I’m just lazy.
• But it is very fast to prototype some games in UIKit.
• Also: UIKit is the oldest iOS API. Examples are easy
to come by, and it’s relatively stable and easy to
learn.
8. Metal
• Hardware-specific graphics API
• Introduced in iOS 8
• Closest to the “metal” (CPU / GPU)
• Uses a custom shader language
• Best performance possible in iOS
9. Open GL (ES)
• Open Graphics Library (for Embedded Systems)
• Cross-platform
(this is what ran underneath iOS before Metal)
• Also extremely low-level
10. Metal / OpenGL ES
• Both are fundamentally similar
• Useful to know how these work, because they
are running “underneath” most game
frameworks
• But these are APIs for the framework developers
(probably not you)
11. SpriteKit
• A 2D framework for drawing images (sprites)
• (You can also draw text, path-based shapes,
and video.)
• Probably loosely based on Cocos2D
(without nearly as many features)
• Physics
12. SceneKit
• 3D framework for drawing 3D models
(also to an OpenGL view)
• New to iOS in 8
• Some really nice debugging tools
13. SpriteKit & SceneKit
• Main advantage to these is flexibility /
interoperation with other iOS APIs
(Core Image, Core Animation, etc.)
• So if ^^^ is not you, there are other more flexible
options.
Note that I will be arguing later, weakly, in favor of UIKit instead of SpriteKit.
(It is not a replacement for 3D, however. Unity or Unreal are a better fit there.)
14. GameKit, aka Game Center
• Leaderboards
• Achievements
• Challenges
• Multiplayer (real-time and asynchronous)
• iCloud saved games as of iOS 8
15. Game Center
• Leaderboards & Achievements
• Great “Extrinsic motivators”
• Game Center app —>
• Also available
in your app
• Also available as
data via the API.
17. Game Center
• Multiplayer options:
• Real-time match making
• helps with making the multiplayer connection, (local or
internet)
• Asynchronous game match making
• game data stored in Game Center
• All options are very flexible for how many players are allowed, and allow
“segmenting” so you can invite a particular subset of players, or
specific Game Center Users.
• All options allow for either using some built-in View controllers, or doing
the matchmaking programmatically.
18. GCController
• Physical Controller API
• Supports iOS bluetooth controllers
• Supports Polling for state or change Events
• Will work with new Apple TV (including the
remote!)
19. GamePlayKit
• New in iOS 9
• GameplayKit Programming Guide contains links to lots of sample
code.
• New classes to help with:
• Entity / Component architecture
• State machines
• Rule Systems
• Minmax AI
• AI behaviors (agents/goals/pathfinding)
24. UIView Animations
• animateWith… family of methods
• provide a way to animate view properties based on a specific
amount of time
(can animate the following: frame, bounds, center, transform, alpha,
backgroundColor, contentStretch)
• Block-based callbacks for completion
• Dynamics: provide some “juiciness” via simple physics
• Pro tip: When things start jumping around check the options
• Note: you can also animate constraints (if that’s your thing)
• Lots of “helpers” out there…
25. UIView Animation Helpers
• JazzHands — from If This Then That
• keyframes & combining animations
• can “lock” animations to a scroll view (or your own property/counter!)
• JHChainableAnimations — for readable animations!
• POP — from Facebook
• Also see AGGeometryKit+POP
• AHEasing — Awesome set of easing functions
• Squash — Brings traditional video animation techniques to UIView
(https://github.com/Spaceman-Labs/Squash)
26. Cocapods
• ObjectAL-for-iPhone — everything audio
• GooglePlayGames — for Google Play
leaderboards / achievements / etc.
(There is even a “Game Center co-existence Guide” here: https://
developers.google.com/games/services/ios/gameCenter)
• GenericGameModel — my own small lib for grid-
based games
(More about this later!)
• Others..?
28. Why UIKit?
• Actually: “Why not any of the previously
discussed API or frameworks?”
• Essentially, there are better alternatives, mostly
• For 3D: Unity, Unreal
• For 2D: Unity, HAXE, OpenFrameworks, Moai
• These are easier, more cross-platform, less
half-assed
29. Understand the Game Loop
• Every game has a loop. Ideally, a loop runs 30-60
times a second, and handles:
• Update
• looks at events and input
• updates game state
• Draw
• renders from Game State
30. Game Loop, Continued
• Drawbacks:
• Need to handle the case where it isn’t exactly your
target frame rate
• Need to be “smart” about what you do in the loop, it’s
very easy to do everything (calculate and render)
every frame, and this will heat up the device
• Without using some kind of animation manager, you
need to manage animations yourself (Worth noting
that SpriteKit and other frameworks do usually
provide this sort of thing for you)
31. Game Loop Alternative
• Worth noting that iOS apps are already running in a “game
loop”, the run loop (NSRunLoop)
• In it, everything is event-based:
• Responding to touches
• Responding to button (UIResponder) events
• “Schedule” animations, Apple’s frameworks handle easing
• You can also “schedule” game updates, if you want / need
to, using dispatch_async()
32. UIKit Game Types
• Event driven — Turn-based, board games,
simple puzzle games
• Data Driven — trivia or word games
• Location or Map-based games — typically using
one of the map frameworks
• Others?
34. ActionChess
• My first app
• Released Feb 2009
(For iPhone OS 2!!!)
• All game logic in a single
UIView subclass (😁😰😭)
35. For The Win
• My project after going
contract / freelance
• For Tasty Minstrel Games
• Released late 2012
• First collaboration with
Tysen Streib, AI Developer
36. Oppo-Citrus
• Released late 2012
• Opposite of Tetris
• First real collaboration with
anyone for one of my own
applications
• Sound Effects made with
REAL fruit!
37. Enter GenericGameModel
• Common themes in previous games:
• coordinate / grid-based games
• "stateful" grid elements
• minimal animations required
• Began work on GGM during the Overnight
Game Jam at 360iDev in September 2012
38. Generic Game Model
• Model
• Update
• GGM_BaseModel
• Handles game logic
• Stores state for each
game coordinate
• View
• Draw
• GGM_UIView
• Handles touch input
• Translates pixel
coordinates to model
coordinates
Natural split felt like:
39. Cloud Growth
• Unreleased game jam
collaboration with fellow
iOS developer Levi Brown
• First instance of a game
using Generic Game
Model (GGM)
40. Henchmen
• Unreleased Ludum Dare
game, December 2012
• Subclassed GGM_UIView
to support isometric
• Only time the isometric
class was used,
unfortunately.
41. DrawCade
• Drawing app for the iCade
• Jan 2013 — updated to
use GGM
(in less than a day)
• Spent another 2 days
making it Universal
42. RE@L Match
Games
• Educational counting
apps for RE@L client
• 3 apps using similar
codebase
• published Dec 2013
• Used GGM
43. Root Down
• Original Board Game
• Published December 2013
• Initial prototype in ~6 hours
(one evening) using GGM
• App store version took
~4 more hours
44. OFC Poker
• Client application built in
~6 weeks
• Feb/March 2014
• Collaboration with
Tysen Streib
• Used GGM
46. Catchup
• Began project in Jan 2013
• Released August 2014
• Most commercially successful
app to date (with more than one
⭐️⭐️⭐️⭐️⭐️ review)!
• Another collaboration with
AI developer Tysen Streib
• First instance of GGM_HexView
47. Other Misc GGM Stuff
• I have “experimented” with porting GGM_UIView
to use SpriteKit
• Lost steam after discovering its poor
performance in the iOS simulator
• Triangle games experiments
• Moving toward more “built-in” functionality
• Have removed its single dependency
48. GGM Example
• Sample application
(included in Github GGM
repository)
• Supports square, hex,
triangular grid types of
arbitrary size
• Supports tap and drag
gestures
49. What’s next for GGM?
• More prototypes! (Obviously)
• Possibly more grid types
• More platforms
• possibly porting this to another framework
(current front-runners are OpenFL or OpenFrameworks)
• tvOS
50. ActionGo
• A port of my first
game (pre-iOS)
• To iPhone, iPad
• tvOS
• And possibly
OSX