SlideShare a Scribd company logo
1 of 12
Download to read offline
In this article I would like to share with you the story of creating our company’s first iOS
game and the experience of using a wonderful 2d graphics engine Cocos2d. It covers some
technical problems we’ve bumped into, while developing the game, as well as the process of
creating the actual gameplay. The resulting app can be found here




It was about 6 o'clock in the morning in Munich, when we met with my colleagues Anton and
Valentine to work out an idea for an inside­company hackathon, which has kind of turned into a
monthly event in our company. None of us had had an experience with any serious game
development, but we thought, it would be kind of cool to develop a game, since we were all tied
up in the regular app projects for so long and wanted to try something new and exciting.

The initial idea we chose was a pie slicer game, where you had a nice round piece of pie, which
you had to vigorously cut into small pieces in a limited amount of time. The pieces were to be me
moved with the power of some kind of a physics engine, so it all wouldn't look too boring. After
some research and poking around, we found out, that we would be most productive with
cocos2d (since Anton I are both iOS­Devs) and box2d (since it's free and plays nicely with
cocos2d), and if we would limit ourselves only to the iOS platform.

 The core for the project was found in the nice tutorial by Allen Tan
(http://www.raywenderlich.com/14302/how­to­make­a­game­like­fruit­ninja­with­box2d­and­coco
s2d­part­1), so we didn't have to go all hardcore on the implementation of cutting and
triangulation algorithms. The tutorial relies on the PRKit library
(https://github.com/asinesio/cocos2d­PRKit), which allows drawing of a convex textured polygon
and extends its PRFilledPolygon class in order to provide some additional functionality like
synching with the box2d's physical body. We decided to borrow this extended class to build our
implementation on top of it.

In spite of the hardest part already being written for us, the first complications came soon. After
the inital project setup and a couple of test runs we found out about the famous 8 vertices per
body limitation of box2d. In order to use the example code and the provided libraries, the pie had
to be a polygon, because box2d doesn't allow a shape to be a segment of a circle (which we
would get after cutting the initial shape into multiple pieces). So since the pie had to be at least
relatively round and cuttable at the same time, we had to compose it from an array of 8­verticed
shapes. It created some minor texturing problems, since the initial tutorial only went in detail
about the implementation of such for the whole bodies. However, after some fiddling, we
managed to overcome this difficulty by feeding the PRFilledPolygon an array of vertices,
composing the outer body edge.

Everything seemed to be fine and dandy so far ­ our pie was floating in 0 gravity in the
unpromising blackness of the iPad screen:
However the initial cutting algorithm for sprites had to be modified to support the bodies
composed from multiple shapes. After some thinking we decided to overcome this difficulty by
simply increasing the 8­vertices per shape limit of the box2d. So we bumped up that number to
24 vertices (which would be definitely too crazy for any relatively serious project). The profiling
showed, that in our use case it didn't make a huge difference, whether the pieces were
composed of 8 or 24 vertices. However there was another problem: when the amount of
small­cut pieces was close to 200, the FPS dropped to about 10 frames, and made it pretty
much impossible to play the game. Part of that was calculation of the collisions (about 20% of
the processor time) and another part was drawing and animating all the mini­pieces, bumping
into each other after each cut.

 The decision came quickly. As soon as a piece turned small enough, we turned off the collisions
calculation for it. The game was still pretty slow, which pushed us to slightly change the
gameplay: the small pieces were to be removed from the screen and added to the payer's "jar".
The size of the cleared area determined the performance of the player. Some degree of linear
and angular damping were also applied to the pieces, so they wouldn't fly around the screen in a
crazy manner:




 By this time Valentine had drawn a nice­looking pie picture. It looked awesome but seemed to
realistic for such an oversimplified cutting process. So we decided to change it to a simply
drawn pizza (the credit for the textures goes to their original rights owners):
However it also felt too unnatural, and at this point it was clear that the design had to be changed
to something not as realistic as a pie or a pizza. Cutting of simple geometrical primitives
seemed like the way to go. Since the redesign was easy and played nicely with the chosen
technology (PRFilledPolygon basically allowed to do exactly that), we implemented it pretty
quickly. Every cut polygon was also stroked, which was done by adding a CCDrawNode to each
slice and feeding it an array of vertices, shaping the outer body of the polygon. It turned out to be
pretty slow, but still faster and nicer­looking than using the standard ccDraw methods:
The game started to take the right direction, but the gameplay wasn't quite there yet. It definitely
lacked some challenge. And what makes a better challenge than some obstacles and enemies?
So we introduced a simple enemy ­ a red dot, that would interfere with cutting of the primitive.
Good, but it could be better. How about some moving lasers? Done. The implementation was
simple and only involved calculation of the point­line distance to the user's touch point.
With the game design and enemies down, we wrote a world­based level system. All the levels
were stored in separate .plist files and described the shape, texturing rules, enemies positions,
level duration and some other parameters. The game­objects tree was populated from the .plists
using the standard Objective­C KVC. For example:

<code>
//......
­ (void)setValue:(id)value forKey:(NSString *)key{
    if([key isEqualToString:@"position"] && [value isKindOfClass:[NSString class]]){
        CGPoint pos = CGPointFromString(value);
        self.position = pos;
    }
    else if([key isEqualToString:@"laserConditions"]){

        NSMutableArray *conditions = [NSMutableArray array];
        for(NSDictionary *conditionDescription in value){
            LaserObstacleCondition *condition = [[[LaserObstacleCondition alloc] init] autorelease];
            [condition  setValuesForKeysWithDictionary:conditionDescription];
            [conditions addObject:condition];
        }
        [super setValue:conditions forKey:key];

    }
    else{
        [super setValue:value forKey:key];
    }
}
//......

//Afterawrds the values got set with the dictionary, read from the plist file:
[self setValuesForKeysWithDictionary: dictionary];

</code>

 To represent the world­level system, we used the standard CCMenu with some additions to it:
CCMenu+Layout (http://tonyngo.net/2011/11/ccmenu­grid­layout­2/ ­ lets you layout the items in
a grid with a proper padding) and CCMenuAdvanced
(https://github.com/psineur/CCMenuAdvanced ­ has a scroll addition to it). So Valentine got busy
with the level design, and Anton and I took off to write some effects.

For the visual effects part we gladly borrowed CCBlade (https://github.com/hiepnd/CCBlade),
which animates the user's touches, and powered it with some cool Star Wars­like sounds. The
other effect was disappearing of the small pieces. Cutting them without any interface feedback
was too boring, so we decided to make them fade out with a small plus sign over them.

The fade out part involved adopting the CCLayerRGBA protocol by the PRfilledPolygon. To do
that we changed the default shader programm to kCCShader_PositionTexture_uColor:

<code>
­(id) initWithPoints:(NSArray *)polygonPoints andTexture:(CCTexture2D *)fillTexture
usingTriangulator: (id<PRTriangulator>) polygonTriangulator{
 if( (self=[super init])) {
        //Changing the default shader program to kCCShader_PositionTexture_uColor
        self.shaderProgram = [[CCShaderCache sharedShaderCache]
programForKey:kCCShader_PositionTexture_uColor];
}
           return self;
}
</code>
and passed the color uniform to it:

<code>
//first we configure the color in the color setter:
colors[4] = {_displayedColor.r/255.,
                         _displayedColor.b/255.,
                         _displayedColor.g/255.,
                         _displayedOpacity/255.};

//then we pass this color as a uniform to the shader program, where colorLocation =
glGetUniformLocation( _shaderProgram.program, "u_color")
­(void) draw {
    //...
          [_shaderProgram setUniformLocation:colorLocation with4fv:colors count:1];
    //...
}
</code>

 It looked kind of nice, but with the stroke and the other effects the FPS dropped pretty low,
especially when cutting through a bulk of pieces, which involved a lot of animations. A quick
googling didn't really give us anything, and we decided to move on by simply increasing the
minimum area of the piece, that could be still present on the screen. It allowed a smaller amount
of pieces to be simultaneously drawn and animated, which boosted the FPS. The fade out effect
was also removed, and all the plus sign sprites were moved into a batch node (which was dumb
of us not to use in the first place):
The sound effects were done by writing a small convenience wrapper around the Simple audio
engine. While implementing it, we bumped into the format problem: the .wav files we used, had
to be converted into 8 or 16 bit PCM. In the other case they either wouldn’t be played at all or
played with some noticeable cracking sound.

After all of that done we finally implemented the shop, where a user could buy stars if he/she
hadn't earned enough of them, while pacing through the game worlds, or share a picture in one
of the social networks to get the stars for free:
At this point the competition's time pressure was starting to get high and it was time to release
the game to the public. Frantically fixing some late­found bugs, we uploaded the binary to the app
store in the hopes of it passing its first review.

Once again, the resulting app can be found here

Author: Arseniy Vershinin

More Related Content

Viewers also liked

Tulsa Dev Lunch iOS at Work
Tulsa Dev Lunch iOS at WorkTulsa Dev Lunch iOS at Work
Tulsa Dev Lunch iOS at WorkMatt Galloway
 
張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeacons張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeaconsPunApp
 
Customer Outstanding Application for Android
Customer Outstanding Application for AndroidCustomer Outstanding Application for Android
Customer Outstanding Application for AndroidWebXpress.IN
 
6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo Horizonte6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo HorizonteGabriel Oliva
 
Supports the information hierarchy by animation transition
Supports the information hierarchy by animation transitionSupports the information hierarchy by animation transition
Supports the information hierarchy by animation transitionNaoya Shiga
 
Adopting Swift Generics
Adopting Swift GenericsAdopting Swift Generics
Adopting Swift GenericsMax Sokolov
 

Viewers also liked (12)

Tulsa Dev Lunch iOS at Work
Tulsa Dev Lunch iOS at WorkTulsa Dev Lunch iOS at Work
Tulsa Dev Lunch iOS at Work
 
iOS App Dev
iOS App Dev iOS App Dev
iOS App Dev
 
張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeacons張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeacons
 
Recent Trends
Recent TrendsRecent Trends
Recent Trends
 
Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015
 
Customer Outstanding Application for Android
Customer Outstanding Application for AndroidCustomer Outstanding Application for Android
Customer Outstanding Application for Android
 
6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo Horizonte6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo Horizonte
 
Swift initcopy
Swift initcopySwift initcopy
Swift initcopy
 
Supports the information hierarchy by animation transition
Supports the information hierarchy by animation transitionSupports the information hierarchy by animation transition
Supports the information hierarchy by animation transition
 
Adopting Swift Generics
Adopting Swift GenericsAdopting Swift Generics
Adopting Swift Generics
 
iOS - development
iOS - developmentiOS - development
iOS - development
 
Objective-C, Swift e o Mercado
Objective-C, Swift e o MercadoObjective-C, Swift e o Mercado
Objective-C, Swift e o Mercado
 

Similar to Dev Story of our first iOS game

Game Jam Junkies - Casual Connect SF
Game Jam Junkies - Casual Connect SFGame Jam Junkies - Casual Connect SF
Game Jam Junkies - Casual Connect SFDave Bisceglia
 
So you (think you) want to work in video games
So you (think you) want to work in video gamesSo you (think you) want to work in video games
So you (think you) want to work in video gamesSven Charleer
 
Cards n Castles: Merging card game and city building game into one, developer...
Cards n Castles: Merging card game and city building game into one, developer...Cards n Castles: Merging card game and city building game into one, developer...
Cards n Castles: Merging card game and city building game into one, developer...Tuang Dheandhanoo
 
DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1DeepMevada1
 
10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-world10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-worldCarlo Mabini Bayo
 
10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-world10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-worldCarlo Mabini Bayo
 
Bradfield, Chris - Godot engine game development projects_ build five cross-p...
Bradfield, Chris - Godot engine game development projects_ build five cross-p...Bradfield, Chris - Godot engine game development projects_ build five cross-p...
Bradfield, Chris - Godot engine game development projects_ build five cross-p...Francisco S. Barralaga
 
Daphnis Labs Game Development Portfolio
Daphnis Labs Game Development PortfolioDaphnis Labs Game Development Portfolio
Daphnis Labs Game Development PortfolioSamanyu Chopra
 
STEPS TO MAKE VIDEO GAMES
STEPS TO MAKE VIDEO GAMES
STEPS TO MAKE VIDEO GAMES
STEPS TO MAKE VIDEO GAMES mobilewaw7
 
AbadIA: the abbey of the crime AI - GDG Cloud London 2018
AbadIA:  the abbey of the crime AI - GDG Cloud London 2018AbadIA:  the abbey of the crime AI - GDG Cloud London 2018
AbadIA: the abbey of the crime AI - GDG Cloud London 2018Juantomás García Molina
 
Iml 600 Ingress and Pokemon Go
Iml 600 Ingress and Pokemon Go  Iml 600 Ingress and Pokemon Go
Iml 600 Ingress and Pokemon Go Teresa Bosch
 
Iproduct presentation(final)
Iproduct presentation(final)Iproduct presentation(final)
Iproduct presentation(final)11009373
 
Advanced View Arduino Projects List - Use Arduino for Projects (2).pdf
Advanced View Arduino Projects List - Use Arduino for Projects (2).pdfAdvanced View Arduino Projects List - Use Arduino for Projects (2).pdf
Advanced View Arduino Projects List - Use Arduino for Projects (2).pdfIsmailkhan77481
 
Video game proposal
Video game proposalVideo game proposal
Video game proposalkieran Beal
 
Sweet Teeth Studios: The Sanke
Sweet Teeth Studios: The SankeSweet Teeth Studios: The Sanke
Sweet Teeth Studios: The Sankemleonardfullsail
 

Similar to Dev Story of our first iOS game (20)

Game Jam Junkies - Casual Connect SF
Game Jam Junkies - Casual Connect SFGame Jam Junkies - Casual Connect SF
Game Jam Junkies - Casual Connect SF
 
So you (think you) want to work in video games
So you (think you) want to work in video gamesSo you (think you) want to work in video games
So you (think you) want to work in video games
 
Cards n Castles: Merging card game and city building game into one, developer...
Cards n Castles: Merging card game and city building game into one, developer...Cards n Castles: Merging card game and city building game into one, developer...
Cards n Castles: Merging card game and city building game into one, developer...
 
DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1
 
10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-world10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-world
 
10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-world10 upcoming-technology-that-may-change-the-world
10 upcoming-technology-that-may-change-the-world
 
Bradfield, Chris - Godot engine game development projects_ build five cross-p...
Bradfield, Chris - Godot engine game development projects_ build five cross-p...Bradfield, Chris - Godot engine game development projects_ build five cross-p...
Bradfield, Chris - Godot engine game development projects_ build five cross-p...
 
Daphnis Labs Game Development Portfolio
Daphnis Labs Game Development PortfolioDaphnis Labs Game Development Portfolio
Daphnis Labs Game Development Portfolio
 
Gamedev(en)
Gamedev(en)Gamedev(en)
Gamedev(en)
 
Gamedev(en)
Gamedev(en)Gamedev(en)
Gamedev(en)
 
STEPS TO MAKE VIDEO GAMES
STEPS TO MAKE VIDEO GAMES
STEPS TO MAKE VIDEO GAMES
STEPS TO MAKE VIDEO GAMES
 
M.B.T.S. round 2, week 2
M.B.T.S. round 2, week 2 M.B.T.S. round 2, week 2
M.B.T.S. round 2, week 2
 
AbadIA: the abbey of the crime AI - GDG Cloud London 2018
AbadIA:  the abbey of the crime AI - GDG Cloud London 2018AbadIA:  the abbey of the crime AI - GDG Cloud London 2018
AbadIA: the abbey of the crime AI - GDG Cloud London 2018
 
Iml 600 Ingress and Pokemon Go
Iml 600 Ingress and Pokemon Go  Iml 600 Ingress and Pokemon Go
Iml 600 Ingress and Pokemon Go
 
Gaming with FME
Gaming with FMEGaming with FME
Gaming with FME
 
M.b.t.s. round 1 week 2 (2018)
M.b.t.s. round 1 week 2 (2018)M.b.t.s. round 1 week 2 (2018)
M.b.t.s. round 1 week 2 (2018)
 
Iproduct presentation(final)
Iproduct presentation(final)Iproduct presentation(final)
Iproduct presentation(final)
 
Advanced View Arduino Projects List - Use Arduino for Projects (2).pdf
Advanced View Arduino Projects List - Use Arduino for Projects (2).pdfAdvanced View Arduino Projects List - Use Arduino for Projects (2).pdf
Advanced View Arduino Projects List - Use Arduino for Projects (2).pdf
 
Video game proposal
Video game proposalVideo game proposal
Video game proposal
 
Sweet Teeth Studios: The Sanke
Sweet Teeth Studios: The SankeSweet Teeth Studios: The Sanke
Sweet Teeth Studios: The Sanke
 

More from Empatika

Gamification 101 - Intro
Gamification 101 - IntroGamification 101 - Intro
Gamification 101 - IntroEmpatika
 
Travel 101 - On Distribution
Travel 101 - On DistributionTravel 101 - On Distribution
Travel 101 - On DistributionEmpatika
 
Travel Tech 101 - Introduction
Travel Tech 101 - IntroductionTravel Tech 101 - Introduction
Travel Tech 101 - IntroductionEmpatika
 
Subscriptions business model - FAQ
Subscriptions business model - FAQSubscriptions business model - FAQ
Subscriptions business model - FAQEmpatika
 
Theories of Innovation
Theories of InnovationTheories of Innovation
Theories of InnovationEmpatika
 
Lessons learned & not learned at MSU
Lessons learned & not learned at MSULessons learned & not learned at MSU
Lessons learned & not learned at MSUEmpatika
 
Disruptive Innovations
Disruptive InnovationsDisruptive Innovations
Disruptive InnovationsEmpatika
 
US Commercial Aviation History - 1
US Commercial Aviation History - 1US Commercial Aviation History - 1
US Commercial Aviation History - 1Empatika
 
Life in a startup
Life in a startupLife in a startup
Life in a startupEmpatika
 
Machine Learning - Empatika Open
Machine Learning - Empatika OpenMachine Learning - Empatika Open
Machine Learning - Empatika OpenEmpatika
 
Machine learning 2 - Neural Networks
Machine learning 2 - Neural NetworksMachine learning 2 - Neural Networks
Machine learning 2 - Neural NetworksEmpatika
 
Machine Learning - Introduction
Machine Learning - IntroductionMachine Learning - Introduction
Machine Learning - IntroductionEmpatika
 
Online Travel 3.0 - Mobile Traveler (Rus)
Online Travel 3.0 - Mobile Traveler (Rus)Online Travel 3.0 - Mobile Traveler (Rus)
Online Travel 3.0 - Mobile Traveler (Rus)Empatika
 
Flight to 1000000 users - Lviv IT Arena 2016
Flight to 1000000 users - Lviv IT Arena 2016Flight to 1000000 users - Lviv IT Arena 2016
Flight to 1000000 users - Lviv IT Arena 2016Empatika
 
introduction to artificial intelligence
introduction to artificial intelligenceintroduction to artificial intelligence
introduction to artificial intelligenceEmpatika
 
Travel inequality - Bayram Annakov
Travel inequality - Bayram AnnakovTravel inequality - Bayram Annakov
Travel inequality - Bayram AnnakovEmpatika
 
App in the Air Travel Hack Moscow - Fall, 2015
App in the Air Travel Hack Moscow - Fall, 2015App in the Air Travel Hack Moscow - Fall, 2015
App in the Air Travel Hack Moscow - Fall, 2015Empatika
 
Product Management
Product ManagementProduct Management
Product ManagementEmpatika
 
Intro to Exponentials - Part 1
Intro to Exponentials - Part 1Intro to Exponentials - Part 1
Intro to Exponentials - Part 1Empatika
 
Singularity University Executive Program - Day 1
Singularity University Executive Program - Day 1Singularity University Executive Program - Day 1
Singularity University Executive Program - Day 1Empatika
 

More from Empatika (20)

Gamification 101 - Intro
Gamification 101 - IntroGamification 101 - Intro
Gamification 101 - Intro
 
Travel 101 - On Distribution
Travel 101 - On DistributionTravel 101 - On Distribution
Travel 101 - On Distribution
 
Travel Tech 101 - Introduction
Travel Tech 101 - IntroductionTravel Tech 101 - Introduction
Travel Tech 101 - Introduction
 
Subscriptions business model - FAQ
Subscriptions business model - FAQSubscriptions business model - FAQ
Subscriptions business model - FAQ
 
Theories of Innovation
Theories of InnovationTheories of Innovation
Theories of Innovation
 
Lessons learned & not learned at MSU
Lessons learned & not learned at MSULessons learned & not learned at MSU
Lessons learned & not learned at MSU
 
Disruptive Innovations
Disruptive InnovationsDisruptive Innovations
Disruptive Innovations
 
US Commercial Aviation History - 1
US Commercial Aviation History - 1US Commercial Aviation History - 1
US Commercial Aviation History - 1
 
Life in a startup
Life in a startupLife in a startup
Life in a startup
 
Machine Learning - Empatika Open
Machine Learning - Empatika OpenMachine Learning - Empatika Open
Machine Learning - Empatika Open
 
Machine learning 2 - Neural Networks
Machine learning 2 - Neural NetworksMachine learning 2 - Neural Networks
Machine learning 2 - Neural Networks
 
Machine Learning - Introduction
Machine Learning - IntroductionMachine Learning - Introduction
Machine Learning - Introduction
 
Online Travel 3.0 - Mobile Traveler (Rus)
Online Travel 3.0 - Mobile Traveler (Rus)Online Travel 3.0 - Mobile Traveler (Rus)
Online Travel 3.0 - Mobile Traveler (Rus)
 
Flight to 1000000 users - Lviv IT Arena 2016
Flight to 1000000 users - Lviv IT Arena 2016Flight to 1000000 users - Lviv IT Arena 2016
Flight to 1000000 users - Lviv IT Arena 2016
 
introduction to artificial intelligence
introduction to artificial intelligenceintroduction to artificial intelligence
introduction to artificial intelligence
 
Travel inequality - Bayram Annakov
Travel inequality - Bayram AnnakovTravel inequality - Bayram Annakov
Travel inequality - Bayram Annakov
 
App in the Air Travel Hack Moscow - Fall, 2015
App in the Air Travel Hack Moscow - Fall, 2015App in the Air Travel Hack Moscow - Fall, 2015
App in the Air Travel Hack Moscow - Fall, 2015
 
Product Management
Product ManagementProduct Management
Product Management
 
Intro to Exponentials - Part 1
Intro to Exponentials - Part 1Intro to Exponentials - Part 1
Intro to Exponentials - Part 1
 
Singularity University Executive Program - Day 1
Singularity University Executive Program - Day 1Singularity University Executive Program - Day 1
Singularity University Executive Program - Day 1
 

Recently uploaded

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 

Recently uploaded (20)

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 

Dev Story of our first iOS game