Linux Day 2013 Messina - Sviluppo di videogiochi in Linux
-
Upload
vittorio-romeo -
Category
Documents
-
view
133 -
download
1
Transcript of 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
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
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
4
I miei progetti
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
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
9
operation bloodshed
● Gioco azione/arcade retro– In fase di lavorazione
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
11
Perché programmare videogiochi?
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
13
Come realizzare tutto ciò che serve?
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
15
Ricominciamo da zero:GNU/Linux + strumenti open-source
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
17
Cosa ci guadagno?
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
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
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
21
Da dove inizio?
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● ...
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
23
Live coding:clone di Breakout
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
25
Partecipa al live coding!
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`
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...
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
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
29
Game loop1) Ottieni input2) Aggiorna logica3) Disegna sullo schermo
Update
Draw
Input
Linux Day 201327/10 - Messina
Vittorio Romeohttp://vittorioromeo.info
30
Coordinate(0, 0)
(0, altezzaFinestra)
(0, lunghezzaFinestra)
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)