Hur man gör en fotboll Simulator (9 / 11 steg)
Steg 9: Programvaran
Jag hade viss erfarenhet med, och visste jag kunde skapa en korrekt boll flyg i Irrlicht. Irrlicht är en plattformsoberoende öppen källkod 3D-motor, och folket på forumet är helt underbar på att hjälpa användare från nybörjare till experter. Irrlicht passar mina behov eftersom:
- Det är öppen källkod och cross-plattform, och jag behöver utveckla för Linux (min nedre mediacenter är Mythbuntu)
- Folken på forumet är otroligt och
- Jag hade erfarenhet av den
Problemet jag hade var att skapa en full skärm video! Jag trodde jag skulle kunna skapa en serie av "Animerade skyltar." Detta är en metod som du förspänning en serie bilder i minnet, och anger den hastighet med vilken de vänds. Tja, visar det sig att även min snabbaste klipp skulle bli några hundra bilder på 720p, och animerade billboard systemet var inte utformad för att tillgodose detta. Jag fick rådet mot detta på forumet, men jag försökte iaf. Nu kan jag säga definitivt att metoden inte fungerar.
Så gick jag på Irrlicht forum på jakt efter en lösning. Vad jag fann var perfekt: Irrlicht VideoMaster. Släcker Bate, från Irrlicht forum, hade skrivit en Irrlicht implementering av den Theora uppspelning bibliotek. Detta är ett stabilt sätt att spela upp Ogg Theora video. Detta innebar att allt jag behövde göra var konvertera min video (h.264) till ogg, och jag kunde spela det tillbaka full skärm eller valfri storlek som jag väljer - även som en konsistens! Ännu bättre, jag kan direkt hoppa till valfri tidsperiod (inom 0.1 sekunder) på video, samt spela, pausa, spola tillbaka, etc.
Som ni kan se från Irrlicht VideoMaster tråden, hade jag väldigt lite problem med att anpassa det till Linux. Jag använde då ffmpeg konvertera min video till OGG. Därifrån var det lätt att sätta i fotboll jag hade modelleras i steg 3, spela några anpassade ljud (domaren visselpipor, Vuvuzelas, "starta upp" ljud och publiken buller) och standard text på skärmen för att instruera och informera spelaren.
Allt jag behövde förutom att var en metod för arduino och min ansökan att prata. Så jag hade målet (ardiuno) skicka en signal när bollen var slagit upp för 1/2 sekund, och en annan signal om bollen var unteed utan att gå igenom målet. När det finns en lyckad kick, skickar arduino 3 byte - x-koordinaten och y-koordinaten flygtiden.
För bollflykt använde jag i princip Irrlicht koordinatsystemet (kartesiska) för att simulera bollflykt. Jag visste riktning bollen var på väg, och jag visste att hastigheten. Allt jag hade att göra var implementerar gravitation, simulera några spin utifrån där bollen sparkades och tillhandahålla en koefficient på studsa när det slog i marken. Det fungerade bra! All källkod är tillgänglig på det sista steget.
Jag upptäcker ett fel-om en spelare var sparka bollen, och någon stod i målet (en sannolik händelse på födelsedagsfest) bollen skulle resa på nästan oändlig hastighet, och försvinna från universum. Allt fungerade fortfarande, bara bollen på skärmen var osynlig tills du startar om spelet. Bollen var inte riktigt nödvändigt för spel, men det gjorde lägga till en cool faktor. Barnen inte hade något emot. Jag har en video av detta på nästa steg.