SlideShare a Scribd company logo
1 of 30
Download to read offline
Davide Coppola
                                                                                        Lowpoly Studios
  Multi-platform indie game development


All logos , images and trademarks are the property of the respective trademark owners

                                   Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Intro: the speaker

   Graduated in Computer Science at Federico II (Naples, IT) - 2008
   Master thesis was a GPGPU project about creation and erosion of heightmaps
   Coder for Curve Studios (London, UK) - 2008-2010
   Started Lowpoly Studios working in his spare time (most of it) - 2009
   Got crazy and decided to work full-time as Lowpoly Studios – 2010
   Took part in Codemotion as speaker - 2011

                                      Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Intro: the company

   Started in London in 2009
   Main project still under development: The Undergrounder
   Made some experiments using Flash
   Created Flash games portal www.AskFlashGames.com
   Developing a secret project for the mobile market



                                      Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Intro: the talk

                    Part 1                                           Part 2
   Indie gamedev                           Example: The Undergrounder
   Philosophical marketing                 Working environment
   Commercial solutions                    Libraries and Frameworks
   Free/Open Source solutions              Managing the code
   Custom solutions                        Future

                                  Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Indie Gamedev
           INDIE = UNSTABLE




                Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Indie Gamedev
           INDIE = UNSTABLE




                Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Why developing multi-platform?

   More distribution channels
   Pretty simple from a technical point of view
   Pretty cheap (working for the desktop market)
   Why not?




                                       Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Why developing for Mac OS X?

In the 2009 the Mac market was a niche market, then...




                         Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Why developing for Linux?

   Niche market
   Catalyst for different markets
   Full availability of tool/framework
   More dedicated website
   Supporting the rising of the platform



                                          Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Commercial solutions

   Engines: Torque, Unigine, Unity, …
   Professional products
   Documentation not always perfect
   High costs not affordable for all
   Controlled by productors and licenses



                                         Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
free/Open Source solutions

   2D engines: Allegro, Clanib, Love, ...
   3D engines: Crystal Space, Irrlitch, Ogre 3D, Panda 3D, …
   Multi-platform (desktop)
   Mostly oriented to rendering
   Long development times
   No commercial support

                                         Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Custom solutions

   Made with your project in mind, so flexible
   No needs to learn new (third-party) thechnologies
   No fixed costs
   Less dependent on third party technologies
   Give you more experience
   Developing proprietary technology

                                        Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Proposed solution

   Follows the Custom model
   C++ code
   Multi-platform: Windows, Mac, Linux
   Based on free/Open Source frameworks and libraries
   Custom, but be flexible...



                                     Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
A real example




      http://www.the-undergrounder.com



                     Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Hardware

   Linux and Windows: PC
   Mac Os X: Mac mini
   Mac + Bootcamp?
   Virtualization: Virtual Box, Vmware, etc...?
   Optional: laptop and netbook



                                        Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Multi-platform working environment

   Code::Blocks                    Eclipse CDT                                   Qt Creator



http://www.codeblocks.org      http://www.eclipse.org/cdt/                      http://qt.nokia.com




                                        Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Working environment on Linux

    Kdevelop                                              SCONS


http://www.kdevelop.org                             http://www.scons.org




                          Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Working environment on Mac

                          Xcode



   http://developer.apple.com/technologies/tools/xcode.html




                          Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Working environment on Windows
                                                                            MinGW
     Visual Studio Express

                                                                      http://www.mingw.org



http://www.microsoft.com/express/Windows/                                   Cygwin


                                                                     http://www.cygwin.com

                                            Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Managing multi-platform code

   Some low level code may depend on the specific platform
   Compile different files for each platform
   Use pre-processor directives
                         void FrameTimer::Start()
                         {
                             m_fElapsed = 0.f;

                         #ifdef WIN32
                             QueryPerformanceCounter(&m_T1);
                         #else
                             gettimeofday(&m_TV1, NULL);
                         #endif
                         }


                                       Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Coding for Windows

   No changes needed when using MinGW + Cygwyn
   Some changes to low level system code when using VisualC++
   Examples available on UNIX Application Migration Guide:
                     http://msdn.microsoft.com/en-us/library/ms811903.aspx




                                           Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Coding for Mac Os X

   Mac Os X follows the POSIX standard
   Only difference: path of the .h files used by the frameworks
                             #ifdef MAC
                                 #include "OpenAL/al.h"
                                 #include "OpenAL/alc.h"
                             #else
                                 #include "AL/al.h"
                                 #include "AL/alc.h"
                             #endif




                                       Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Base code




http://www.libsdl.org                            http://www.sfml-dev.org




                        Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Graphics




           http://www.opengl.org




                 Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Audio




        http://connect.creativelabs.com/openal/




                       Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Fisica
                Box2D


          http://www.box2d.org


             Chipmunk                                                   http://bulletphysics.org




http://code.google.com/p/chipmunk-physics/

                                             Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Tools

   Gimp (2D bitmap graphics) - http://www.gimp.org/
   Inkscape (2D vector graphics) - http://inkscape.org/
   Blender (3D graphics) - http://www.blender.org/
   Audacity (audio editing) - http://audacity.sourceforge.net/
   Kdenlive (video editing, Linux e Mac)- http://www.kdenlive.org/
   Virtualdub (video editing, Windows)- http://www.virtualdub.org/

                                        Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
The future




http://www.w3.org/html/                        http://www.khronos.org/webgl/




                          Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Contacts




                               http://www.lowpoly-studios.com



http://www.facebook.com/LowpolyStudios                       http://twitter.com/LowpolyStudios
  http://www.facebook.com/m3xican                                http://twitter.com/vivaladav



                                          Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
Questions?




             Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios

More Related Content

Similar to Multi-platform indie game development

Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1benDesigning
 
ODROID Magazine January 2015
ODROID Magazine January 2015ODROID Magazine January 2015
ODROID Magazine January 2015Nanik Tolaram
 
Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dominique Boutin
 
OpenY: Scaling and Sharing with Custom Drupal Distribution
OpenY: Scaling and Sharing with Custom Drupal DistributionOpenY: Scaling and Sharing with Custom Drupal Distribution
OpenY: Scaling and Sharing with Custom Drupal DistributionDrupalCamp Kyiv
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan ErckOrtus Solutions, Corp
 
ODROID Magazine April 2014
ODROID Magazine April 2014ODROID Magazine April 2014
ODROID Magazine April 2014Nanik Tolaram
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko3D
 
DevOps for Design - Using Figmagic to support continuous design
DevOps for Design - Using Figmagic to support continuous designDevOps for Design - Using Figmagic to support continuous design
DevOps for Design - Using Figmagic to support continuous designMikael Vesavuori
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryAndy Piper
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)jaxLondonConference
 
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsVicente Gerardo Guzman Lucio
 
Android design lecture #1
Android design   lecture #1Android design   lecture #1
Android design lecture #1Vitali Pekelis
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedWojciech Koszek
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopmentgillygize
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIndyMobileNetDev
 
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...Asociación Ecuatoriana de Software AESOFT
 
Cross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual StudioCross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual Studiobryan costanich
 
Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Alessandro Binhara
 
Mobile apps on the big screen
Mobile apps on the big screenMobile apps on the big screen
Mobile apps on the big screenHeinrich Seeger
 
Cordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstCordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstRaymond Camden
 

Similar to Multi-platform indie game development (20)

Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
 
ODROID Magazine January 2015
ODROID Magazine January 2015ODROID Magazine January 2015
ODROID Magazine January 2015
 
Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015
 
OpenY: Scaling and Sharing with Custom Drupal Distribution
OpenY: Scaling and Sharing with Custom Drupal DistributionOpenY: Scaling and Sharing with Custom Drupal Distribution
OpenY: Scaling and Sharing with Custom Drupal Distribution
 
ITB2019 CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan ErckITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019 CommandBox vs Node.js - Nolan Erck
 
ODROID Magazine April 2014
ODROID Magazine April 2014ODROID Magazine April 2014
ODROID Magazine April 2014
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++
 
DevOps for Design - Using Figmagic to support continuous design
DevOps for Design - Using Figmagic to support continuous designDevOps for Design - Using Figmagic to support continuous design
DevOps for Design - Using Figmagic to support continuous design
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud Foundry
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
 
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
 
Android design lecture #1
Android design   lecture #1Android design   lecture #1
Android design lecture #1
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
 
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
 
Cross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual StudioCross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual Studio
 
Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project
 
Mobile apps on the big screen
Mobile apps on the big screenMobile apps on the big screen
Mobile apps on the big screen
 
Cordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstCordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirst
 

Recently uploaded

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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
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
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
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
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
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
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 

Recently uploaded (20)

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?
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
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...
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
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
 
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
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 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
 
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
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 

Multi-platform indie game development

  • 1. Davide Coppola Lowpoly Studios Multi-platform indie game development All logos , images and trademarks are the property of the respective trademark owners Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 2. Intro: the speaker  Graduated in Computer Science at Federico II (Naples, IT) - 2008  Master thesis was a GPGPU project about creation and erosion of heightmaps  Coder for Curve Studios (London, UK) - 2008-2010  Started Lowpoly Studios working in his spare time (most of it) - 2009  Got crazy and decided to work full-time as Lowpoly Studios – 2010  Took part in Codemotion as speaker - 2011 Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 3. Intro: the company  Started in London in 2009  Main project still under development: The Undergrounder  Made some experiments using Flash  Created Flash games portal www.AskFlashGames.com  Developing a secret project for the mobile market Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 4. Intro: the talk Part 1 Part 2  Indie gamedev  Example: The Undergrounder  Philosophical marketing  Working environment  Commercial solutions  Libraries and Frameworks  Free/Open Source solutions  Managing the code  Custom solutions  Future Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 5. Indie Gamedev INDIE = UNSTABLE Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 6. Indie Gamedev INDIE = UNSTABLE Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 7. Why developing multi-platform?  More distribution channels  Pretty simple from a technical point of view  Pretty cheap (working for the desktop market)  Why not? Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 8. Why developing for Mac OS X? In the 2009 the Mac market was a niche market, then... Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 9. Why developing for Linux?  Niche market  Catalyst for different markets  Full availability of tool/framework  More dedicated website  Supporting the rising of the platform Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 10. Commercial solutions  Engines: Torque, Unigine, Unity, …  Professional products  Documentation not always perfect  High costs not affordable for all  Controlled by productors and licenses Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 11. free/Open Source solutions  2D engines: Allegro, Clanib, Love, ...  3D engines: Crystal Space, Irrlitch, Ogre 3D, Panda 3D, …  Multi-platform (desktop)  Mostly oriented to rendering  Long development times  No commercial support Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 12. Custom solutions  Made with your project in mind, so flexible  No needs to learn new (third-party) thechnologies  No fixed costs  Less dependent on third party technologies  Give you more experience  Developing proprietary technology Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 13. Proposed solution  Follows the Custom model  C++ code  Multi-platform: Windows, Mac, Linux  Based on free/Open Source frameworks and libraries  Custom, but be flexible... Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 14. A real example http://www.the-undergrounder.com Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 15. Hardware  Linux and Windows: PC  Mac Os X: Mac mini  Mac + Bootcamp?  Virtualization: Virtual Box, Vmware, etc...?  Optional: laptop and netbook Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 16. Multi-platform working environment Code::Blocks Eclipse CDT Qt Creator http://www.codeblocks.org http://www.eclipse.org/cdt/ http://qt.nokia.com Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 17. Working environment on Linux Kdevelop SCONS http://www.kdevelop.org http://www.scons.org Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 18. Working environment on Mac Xcode http://developer.apple.com/technologies/tools/xcode.html Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 19. Working environment on Windows MinGW Visual Studio Express http://www.mingw.org http://www.microsoft.com/express/Windows/ Cygwin http://www.cygwin.com Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 20. Managing multi-platform code  Some low level code may depend on the specific platform  Compile different files for each platform  Use pre-processor directives void FrameTimer::Start() { m_fElapsed = 0.f; #ifdef WIN32 QueryPerformanceCounter(&m_T1); #else gettimeofday(&m_TV1, NULL); #endif } Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 21. Coding for Windows  No changes needed when using MinGW + Cygwyn  Some changes to low level system code when using VisualC++  Examples available on UNIX Application Migration Guide: http://msdn.microsoft.com/en-us/library/ms811903.aspx Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 22. Coding for Mac Os X  Mac Os X follows the POSIX standard  Only difference: path of the .h files used by the frameworks #ifdef MAC #include "OpenAL/al.h" #include "OpenAL/alc.h" #else #include "AL/al.h" #include "AL/alc.h" #endif Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 23. Base code http://www.libsdl.org http://www.sfml-dev.org Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 24. Graphics http://www.opengl.org Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 25. Audio http://connect.creativelabs.com/openal/ Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 26. Fisica Box2D http://www.box2d.org Chipmunk http://bulletphysics.org http://code.google.com/p/chipmunk-physics/ Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 27. Tools  Gimp (2D bitmap graphics) - http://www.gimp.org/  Inkscape (2D vector graphics) - http://inkscape.org/  Blender (3D graphics) - http://www.blender.org/  Audacity (audio editing) - http://audacity.sourceforge.net/  Kdenlive (video editing, Linux e Mac)- http://www.kdenlive.org/  Virtualdub (video editing, Windows)- http://www.virtualdub.org/ Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 28. The future http://www.w3.org/html/ http://www.khronos.org/webgl/ Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 29. Contacts http://www.lowpoly-studios.com http://www.facebook.com/LowpolyStudios http://twitter.com/LowpolyStudios http://www.facebook.com/m3xican http://twitter.com/vivaladav Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios
  • 30. Questions? Davide Coppola – davide.coppola@lowpoly-studios.com – Lowpoly Studios