Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

32
Linux Day 2013 27/10 - Messina Vittorio Romeo http://vittorioromeo.info 1 Sviluppo di videogiochi in Linux 2013

Transcript of Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Page 1: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

1

Sviluppo di videogiochi in Linux

2013

Page 2: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

2

Chi sono?

● Studente di informatica– 1° anno, UNIME

● Appassionato di informatica e videogiochi

● Programmatore autodidatta

Page 3: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

3

Di cosa parliamo?

● La mia esperienza con GNU/Linux– Progetti e risultati

● GNU/Linux come ambiente di sviluppo● Sviluppo open-source

– Creare videogiochi – perché?– Programmazione sociale– Opportunità di guadagno

● Live coding: clone di Breakout

Page 4: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

4

I miei progetti

Page 5: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

5

Open Hexagon

● Gioco arcade gratuito, open-source, multi-piattaforma– Nato come un clone di

“Super Hexagon”– Fanbase di circa 2000

giocatori (Facebook)– 7500 risultati per “Open

Hexagon” su YouTube– C++11, Lua, JSON

Page 6: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux
Page 7: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

7

10corp

● Gioco puzzle-platformer gratuito, open-source, multi-piattaforma– Creato per la

competizione “Ludum Dare 27”

– C++11, JSON

Page 8: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux
Page 9: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

9

operation bloodshed

● Gioco azione/arcade retro– In fase di lavorazione

Page 10: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux
Page 11: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

11

Perché programmare videogiochi?

Page 12: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

12

Gamedev: esperienza a 360°

● Un videogioco ha bisogno di:– Design– Codice– Grafica– Musica– Sonoro– Storia– Community– ...

Concetto

Implementazione

Risorse

Grafica

Musica

Suoni

Scripting

Distribuzione

Engine

Grafica

Musica

Suoni

Grafica

Musica

Suoni

Grafica

Musica

Suoni

Grafica

Musica

Suoni

Grafica

Musica

Suoni

Grafica

Musica

Suoni

Meccaniche

Stile

Storia

Vide

ogio

co

Page 13: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

13

Come realizzare tutto ciò che serve?

Page 14: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

14

Usiamo dei tool/framework?

● Vantaggi– Strumenti validi– Tempo di sviluppo rapido– Facile gestione di risorse

● Svantaggi– Limitazioni– Compatibilità– Poca efficienza– Difficile collaborazione– Closed-source/a pagamento– Diseducazione

Page 15: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

15

Ricominciamo da zero:GNU/Linux + strumenti open-source

Page 16: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

16

Sviluppo con GNU/Linux

● Controllo totale– Nessuna limitazione

● Esperienza educativa– Capire veramente come funzionano

le cose● Collaborazione open-source

– Innumerevoli risorse– Se qualcosa manca... si contribuisce

● Nessuna spesa richiesta– Tutto disponibile gratuitamente

● Massima efficienza● Target universali● Grande community

Page 17: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

17

Cosa ci guadagno?

Page 18: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

18

Guadagni economici

● Modello Freemium– Evitare il pay-to-win

● Donazioni – Incentivare con reward

● Dual-licensing– Esempi: Qt e OpenOffice

● Kickstarting● Opportunità lavorative● Codice gratis, risorse a

pagamento

Page 19: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

19

Guadagni personali

● Esperienza– Lavorare su GNU/Linux– Scrivere codice efficiente e portabile– Gestire e creare risorse– Distribuzione e networking

● Soddisfazione– Realizzare un gioco completo– Ottenere feedback

● Community– Fan-base intorno ai propri progetti– Target esistente per progetti futuri

Page 20: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

20

Guadagni universali

● Librerie, snippet– Qualsiasi contribuzione

open-source può tornare utile!

● Documentazione, Q/A– StackOverflow, …– Creazione postmortem,

tutorial, articoli● Un'esperienza nativa

videoludica in più per GNU/Linux– Più giochi = più utenti

Page 21: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

21

Da dove inizio?

Page 22: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

22

Open-source: infinite possibilità

● C & SDL● C++ & SFML2● Python & PyGame● Lua & Love2D● Java & LibGDX● JavaScript & WebGL● ...

Page 23: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

23

Live coding:clone di Breakout

Page 24: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

24

Live coding: Breakout

● 160~ linee di codice– C++11

● Nuovo standard– Più moderno– Più veloce– Più conciso

– SFML2● Wrapper C++ per:

– OpenGL– Libsndfile– GLFW

Page 25: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

25

Partecipa al live coding!

Page 26: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

26

Compilatori C++11

● GCC – Versione 4.6.0: compila con `-std=c++0x`– Versione 4.7.2: compila con `-std=c++11`

● Clang– Versione 2.8: compila con `-std=c++0x`– Versione 3.0: compila con `-std=c++11`

Page 27: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

27

Libreria SFML2

● File binari– http://sfml-dev.org/download/sfml/2.1/– Ubuntu: apt-add-repository

ppa:sonkun/sfml-development

– Arch Linux: pacman -S sfml

● Sorgenti– https://github.com/LaurentGomila/SFML

● Richiede cmake per la compilazione● Oppure...

Page 28: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

28

Dati livecodinghttp://vittorioromeo.info/Downloads/datiLC.zip

oppure

binaries SFML2 sorgenti SFML2

http://www.mediafire.com/?55q89mv5yarsgci

Page 29: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

29

Game loop1) Ottieni input2) Aggiorna logica3) Disegna sullo schermo

Update

Draw

Input

Page 30: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

30

Coordinate(0, 0)

(0, altezzaFinestra)

(0, lunghezzaFinestra)

Page 31: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

Linux Day 201327/10 - Messina

Vittorio Romeohttp://vittorioromeo.info

31

Collisioni

(sx, sopra)

(sx, sotto) (dx, sotto)

(dx, sopra)

(sx, sopra) (dx, sopra)

(dx, sotto)(sx, sotto)

(sx - dx)

(sopra - sotto)

Page 32: Linux Day 2013 Messina - Sviluppo di videogiochi in Linux

http://vittorioromeo.info

Domande? [email protected]

Grazie per l'attenzione!