SlideShare a Scribd company logo
1 of 15
Download to read offline
An introduction to
Generic Game Model
Martin Grider
Abstract Puzzle LLC
What is GGM?
• A small collection of re-usable classes for native
2D game development in iOS.
• Primarily (exclusively) uses UIKit.
• Facilitates rapid 2D prototyping.
• Allows you to think almost exclusively in grid
coordinates rather than pixel coordinates.
M(VC) for 2D games
• Model
• various properties I find useful for games:
gameIsPaused, gameIsOver, gameDuration, score
• each grid element (x,y) has an integer “state”
• View
• knows how to display each state
• translates user input to the model
pod ‘GenericGameModel’
• GenericGameModel is installable via
cocoapods.
• Also available here: 

https://github.com/mgrider/GenericGameModel
• Example project shows you how to do stuff.
GGM_BaseModel
• Subclasses BaseModel
• [self.game save]; — does all the encoding stuff or you.
• Game states are stored in a multidimensional array of
NSNumber objects.
• int s = [self.game stateAtX:x andY:y];
• [self.game setStateAtX:x andY:y toState:newState];
• Typically use key/value observing for score, sometimes for
GameIsOver. (Yes, this should be isGameOver, this, among
other things, needs refactoring.)
GGM_UIView
• setHandlesTaps:YES — detect tap input
• override handleTapAtX:andY: in your subclass
• setHandlesDrags:YES — detect drag input
• override handleDragStart, handleDragContinue, and
handleDragEnd in your subclass.
• setGridType — supports backgroundColor/UIImage/UILabel/
Hex shape
• Individual views themselves are often another custom UIView
subclass that draws its own state.
GGM History
• Conceived in 2012 because I
was writing very similar “model”
code for all my games. (At the
time I was working on both For
the Win and Oppo-Citrus.)
• Really got its start at the
Overnight Game Jam at
360iDev in 2012.
1st use, Cloud Growth, september 2012 —>
GGM History, p.2
• Second use was
for a Ludum
Dare (another
game jam) at
the end of 2012.
• Subclassed
GGM_UIView to
support
isometric
display. 2nd use, Henchmen, December 2012
GGM History: DrawCade
• Jan 2013 updated
DrawCade, my drawing
application for the iCade,
to use GGM classes.
• Took less than a day to
refactor/rewrite to use
GGM.
• Spent another two
days making it
universal.
GGM History: Catchup
• Jan 2013 — started
working on Catchup
(then Ketchup), a hex-
based board game
conversion for 2-players.
• Uses GGM_HexView
• Still in work in
progress.
GGM History: RE@L Match
• In 2013, built a series of kid’s
educational games around the
mechanic of matching tiles in
the “sliding hole” puzzle.
• 3 apps published Dec 2013:
• Numbers & Words
• Numbers & Counting
• Counting & Words
• States come not from the
GGM_BaseModel subclass.
GGM History: Root Down
• December 2013,
published Root Down, an
original 2-player board
game.
• Prototyped initial game
in an evening. ~6
hours.
• App store version took
maybe another 4 hours.
GGM History: Poker Game
• Feb / March
2014, built this
poker variant
application.
• Client project
• ~6 weeks
GGM History: Action Go
• Jan 2014, ported my
first game, Go-Tetris
(originally a flash
game) to iOS.
• ~4 weeks spent in
development so far.
Quartz “Juicing”
• Juicing just refers to visual effects, or pizazz.
• Some cocoapods to check out:
• AGGeometryKit
• UIView+EasingFunctions
• Squash

More Related Content

What's hot

Casual and Social Games with Unity
Casual and Social Games with UnityCasual and Social Games with Unity
Casual and Social Games with UnityTadej Gregorcic
 
Game development -session on unity 3d
Game development -session on unity 3d Game development -session on unity 3d
Game development -session on unity 3d Muhammad Maaz Irfan
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkGorm Lai
 
Mobile Game Development in Unity
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in UnityHakan Saglam
 
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザインUnite2017Tokyo
 
Proposal of 3d GAME Final Year Project
Proposal of  3d GAME Final Year ProjectProposal of  3d GAME Final Year Project
Proposal of 3d GAME Final Year Projectfahim shahzad
 
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015Codemotion
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game EngineMohsen Mirhoseini
 
Sx sw speaker proposal slides
Sx sw speaker proposal slidesSx sw speaker proposal slides
Sx sw speaker proposal slidesMitch Williams
 
Academy PRO: Unity 3D. Scripting
Academy PRO: Unity 3D. ScriptingAcademy PRO: Unity 3D. Scripting
Academy PRO: Unity 3D. ScriptingBinary Studio
 
Unity 3D
Unity 3DUnity 3D
Unity 3Dgema123
 

What's hot (20)

Casual and Social Games with Unity
Casual and Social Games with UnityCasual and Social Games with Unity
Casual and Social Games with Unity
 
Unity Game Engine
Unity Game EngineUnity Game Engine
Unity Game Engine
 
Unity - Game Engine
Unity - Game EngineUnity - Game Engine
Unity - Game Engine
 
Game development -session on unity 3d
Game development -session on unity 3d Game development -session on unity 3d
Game development -session on unity 3d
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
 
Mobile Game Development in Unity
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in Unity
 
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
【Unite 2017 Tokyo】EditorVRの設計から学んだこと:使えるVRエディターのためのデザイン
 
Proposal of 3d GAME Final Year Project
Proposal of  3d GAME Final Year ProjectProposal of  3d GAME Final Year Project
Proposal of 3d GAME Final Year Project
 
Unity 3d Basics
Unity 3d BasicsUnity 3d Basics
Unity 3d Basics
 
Game Development with Unity - by Mickey MacDonald
Game Development with Unity - by Mickey MacDonaldGame Development with Unity - by Mickey MacDonald
Game Development with Unity - by Mickey MacDonald
 
Unity 3D VS your team
Unity 3D VS your teamUnity 3D VS your team
Unity 3D VS your team
 
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
Hands On with the Unity 5 Game Engine! - Andy Touch - Codemotion Roma 2015
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game Engine
 
Sx sw speaker proposal slides
Sx sw speaker proposal slidesSx sw speaker proposal slides
Sx sw speaker proposal slides
 
Zombi - Shoot for Survive
Zombi - Shoot for SurviveZombi - Shoot for Survive
Zombi - Shoot for Survive
 
Unity
UnityUnity
Unity
 
Academy PRO: Unity 3D. Scripting
Academy PRO: Unity 3D. ScriptingAcademy PRO: Unity 3D. Scripting
Academy PRO: Unity 3D. Scripting
 
Unity 3D
Unity 3DUnity 3D
Unity 3D
 
unity basics
unity basicsunity basics
unity basics
 
Unity 3D, A game engine
Unity 3D, A game engineUnity 3D, A game engine
Unity 3D, A game engine
 

Similar to Introduction to Generic Game Model (GGM

Cross Game Dev with Corona
Cross Game Dev with CoronaCross Game Dev with Corona
Cross Game Dev with CoronaShawn Grimes
 
DDD in Pixel Federation v1 | TechForce Meetup vol.3
DDD in Pixel Federation v1 | TechForce Meetup vol.3DDD in Pixel Federation v1 | TechForce Meetup vol.3
DDD in Pixel Federation v1 | TechForce Meetup vol.3Pixel Federation
 
Mobile games, from idea to product
Mobile games, from idea to productMobile games, from idea to product
Mobile games, from idea to productÀlex Cabrera Gil
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android GamesPlatty Soft
 
Integrating Google Play Games
Integrating Google Play GamesIntegrating Google Play Games
Integrating Google Play GamesPlatty Soft
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGLGlobant
 
GDF: A Gamification Design Framework powered by Model-Driven Engineering
GDF: A Gamification Design Framework powered by Model-Driven EngineeringGDF: A Gamification Design Framework powered by Model-Driven Engineering
GDF: A Gamification Design Framework powered by Model-Driven Engineeringantbucc
 
Cardboard VR: Building Low Cost VR Experiences
Cardboard VR: Building Low Cost VR ExperiencesCardboard VR: Building Low Cost VR Experiences
Cardboard VR: Building Low Cost VR ExperiencesMark Billinghurst
 
JS digest. February 2017
JS digest. February 2017JS digest. February 2017
JS digest. February 2017ElifTech
 
GameMaker:Studio and Windows
GameMaker:Studio and Windows GameMaker:Studio and Windows
GameMaker:Studio and Windows Lee Stott
 

Similar to Introduction to Generic Game Model (GGM (20)

Cross Game Dev with Corona
Cross Game Dev with CoronaCross Game Dev with Corona
Cross Game Dev with Corona
 
Unity workshop
Unity workshopUnity workshop
Unity workshop
 
DDD in Pixel Federation v1 | TechForce Meetup vol.3
DDD in Pixel Federation v1 | TechForce Meetup vol.3DDD in Pixel Federation v1 | TechForce Meetup vol.3
DDD in Pixel Federation v1 | TechForce Meetup vol.3
 
Mobile games, from idea to product
Mobile games, from idea to productMobile games, from idea to product
Mobile games, from idea to product
 
Cocos2d for beginners
Cocos2d for beginnersCocos2d for beginners
Cocos2d for beginners
 
Tools for developing Android Games
 Tools for developing Android Games Tools for developing Android Games
Tools for developing Android Games
 
Cocos2d programming
Cocos2d programmingCocos2d programming
Cocos2d programming
 
Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014
 
Cocos2d game programming 2
Cocos2d game programming 2Cocos2d game programming 2
Cocos2d game programming 2
 
Integrating Google Play Games
Integrating Google Play GamesIntegrating Google Play Games
Integrating Google Play Games
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGL
 
GDF: A Gamification Design Framework powered by Model-Driven Engineering
GDF: A Gamification Design Framework powered by Model-Driven EngineeringGDF: A Gamification Design Framework powered by Model-Driven Engineering
GDF: A Gamification Design Framework powered by Model-Driven Engineering
 
Gtug
GtugGtug
Gtug
 
Cardboard VR: Building Low Cost VR Experiences
Cardboard VR: Building Low Cost VR ExperiencesCardboard VR: Building Low Cost VR Experiences
Cardboard VR: Building Low Cost VR Experiences
 
G3m overview
G3m overviewG3m overview
G3m overview
 
JS digest. February 2017
JS digest. February 2017JS digest. February 2017
JS digest. February 2017
 
10java 2d
10java 2d10java 2d
10java 2d
 
Transitioning to Native
Transitioning to NativeTransitioning to Native
Transitioning to Native
 
CGLabLec6.pptx
CGLabLec6.pptxCGLabLec6.pptx
CGLabLec6.pptx
 
GameMaker:Studio and Windows
GameMaker:Studio and Windows GameMaker:Studio and Windows
GameMaker:Studio and Windows
 

Recently uploaded

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

Introduction to Generic Game Model (GGM

  • 1. An introduction to Generic Game Model Martin Grider Abstract Puzzle LLC
  • 2. What is GGM? • A small collection of re-usable classes for native 2D game development in iOS. • Primarily (exclusively) uses UIKit. • Facilitates rapid 2D prototyping. • Allows you to think almost exclusively in grid coordinates rather than pixel coordinates.
  • 3. M(VC) for 2D games • Model • various properties I find useful for games: gameIsPaused, gameIsOver, gameDuration, score • each grid element (x,y) has an integer “state” • View • knows how to display each state • translates user input to the model
  • 4. pod ‘GenericGameModel’ • GenericGameModel is installable via cocoapods. • Also available here: 
 https://github.com/mgrider/GenericGameModel • Example project shows you how to do stuff.
  • 5. GGM_BaseModel • Subclasses BaseModel • [self.game save]; — does all the encoding stuff or you. • Game states are stored in a multidimensional array of NSNumber objects. • int s = [self.game stateAtX:x andY:y]; • [self.game setStateAtX:x andY:y toState:newState]; • Typically use key/value observing for score, sometimes for GameIsOver. (Yes, this should be isGameOver, this, among other things, needs refactoring.)
  • 6. GGM_UIView • setHandlesTaps:YES — detect tap input • override handleTapAtX:andY: in your subclass • setHandlesDrags:YES — detect drag input • override handleDragStart, handleDragContinue, and handleDragEnd in your subclass. • setGridType — supports backgroundColor/UIImage/UILabel/ Hex shape • Individual views themselves are often another custom UIView subclass that draws its own state.
  • 7. GGM History • Conceived in 2012 because I was writing very similar “model” code for all my games. (At the time I was working on both For the Win and Oppo-Citrus.) • Really got its start at the Overnight Game Jam at 360iDev in 2012. 1st use, Cloud Growth, september 2012 —>
  • 8. GGM History, p.2 • Second use was for a Ludum Dare (another game jam) at the end of 2012. • Subclassed GGM_UIView to support isometric display. 2nd use, Henchmen, December 2012
  • 9. GGM History: DrawCade • Jan 2013 updated DrawCade, my drawing application for the iCade, to use GGM classes. • Took less than a day to refactor/rewrite to use GGM. • Spent another two days making it universal.
  • 10. GGM History: Catchup • Jan 2013 — started working on Catchup (then Ketchup), a hex- based board game conversion for 2-players. • Uses GGM_HexView • Still in work in progress.
  • 11. GGM History: RE@L Match • In 2013, built a series of kid’s educational games around the mechanic of matching tiles in the “sliding hole” puzzle. • 3 apps published Dec 2013: • Numbers & Words • Numbers & Counting • Counting & Words • States come not from the GGM_BaseModel subclass.
  • 12. GGM History: Root Down • December 2013, published Root Down, an original 2-player board game. • Prototyped initial game in an evening. ~6 hours. • App store version took maybe another 4 hours.
  • 13. GGM History: Poker Game • Feb / March 2014, built this poker variant application. • Client project • ~6 weeks
  • 14. GGM History: Action Go • Jan 2014, ported my first game, Go-Tetris (originally a flash game) to iOS. • ~4 weeks spent in development so far.
  • 15. Quartz “Juicing” • Juicing just refers to visual effects, or pizazz. • Some cocoapods to check out: • AGGeometryKit • UIView+EasingFunctions • Squash