SuomiGameHUB

Maailma tarvitsee pelejä

Oma pelimoottori SDL2:n avulla

Kehitetään oma pelimoottori C++:n ja SDL:n avulla. Pelimoottoreiden luomisessa on hyvä käsikirja Jason Gregorin “Game Engine Architecture“. Kirja tarjoaa syvällisen ymmärryksen pelimoottorin suunnittelusta ja on noin tuhat sivua pitkä. Pelimoottorin tekeminen voi olla erityisen hyödyllistä, jos olet kiinnostunut peliohjelmoinnista. Tämä antaa perustiedot siitä, miten pelimoottori toimii. Jos tavoitteenasi on vain pelin tekeminen, suosittelen käyttämään valmiita moottoreita, kuten Unrealia, Godotia, Unityä tai Game Makeria.

Valitsemalla tehdä oman pelimoottorin, saat syvällistä tietoa ja ymmärrystä peliohjelmoinnin taustalla olevista prosesseista. Tämä tietämys auttaa ratkaisemaan mahdollisia ongelmia peliprojekteissa. Aloittaessamme, emme keskity monimutkaisiin projekteihin, vaan käytämme SDL:ää (Simple DirectMedia Layer) rakentaaksemme yksinkertaisen 2D-pelimoottorin. Kun siirrytään 3D-pelimoottoreihin, monimutkaisuus kasvaa merkittävästi.

SDL:n käyttöönotto on ensimmäinen askel. SDL on kirjasto, joka sisältää useita komponentteja pelinkehityksen tueksi. Sen avulla voidaan piirtää grafiikkaa, toistaa ääniä sekä hallita näppäimistön, hiiren ja peliohjaimen syötteitä. SDL tarjoaa myös työkalut verkko-ominaisuuksien, kuten moninpelin, toteuttamiseen. SDL:n löytää helposti verkosta, esimerkiksi GitHubista tai sen virallisilta verkkosivuilta.

Käytämme oppaassa SDL:n versiota 2. SDL:stä on oppaan kirjoitushetkellä kehitteillä myös versio 3, mutta jos haluat seurata opasta, sinun on käytettävä versiota 2. Emme voi taata yhteensopivuutta tulevien versioiden, kuten version 3 kanssa.

SDL:n virallisilla verkkosivuilla voit löytää uusimmat vakaiden versioiden julkaisut. Jos käytät Windowsia ja Visual Studioa, kannattaa ladata Visual C++:lle sopiva versio SDL:stä, esim. SDL2-devel-2.28.5-VC.zip. Lataamisen jälkeen voit tarkastella ladatun tiedoston sisältöä, jossa tarvitsemamme kansiot ovat ‘Lib’ ja ‘Include’. Nämä sisältävät kirjaston ja header-tiedostot, joita tarvitaan SDL:n käyttöön C++:ssa.

Ladattuasi SDL:n, on seuraava askel purkaa ‘Include’ ja ‘Lib’ kansiot projektiisi sopivaan sijaintiin. Tämän jälkeen voit alkaa hyödyntää SDL-kirjastoa C++-projekteissasi.

Tarvitsemme myös SDL:n dynaamisen linkkikirjaston (DLL). Valitse Githubin releaseista SDL:n 64-bittinen DLL-versio, esim. SDL2-2.28.5-win32-x64.zip. DLL-tiedostot ovat sovelluksia, jotka tarvitsevat toisen sovelluksen ajamiseen. Kun luodaan peli SDL:ää käyttäen, pelin mukana on toimitettava tämä DLL-tiedosto, jotta peli voi käyttää SDL:n tarjoamia ominaisuuksia.

Visual Studiossa luodaan uusi C++-projekti valitsemalla ‘Empty Project’ ja antamalla sille nimi, esimerkiksi SKH-SDL2. Projektissa luodaan uusi tiedosto, main.cpp. SDL integroidaan projektiin lisäämällä koodirivi…

#include <SDL.h>

Jos SDL.h-tiedostoa ei löydy, on se lisättävä projektiin. Tämä tehdään lisäämällä ladatut ‘Include’ ja ‘Lib’ kansiot menemällä projektin ominaisuuksiin (‘Properties’), valitsemalla ‘VC++ Directories’ ja lisäämällä ‘Include Directories’ sekä ‘Library Directories’ kohdissa polut ladattujen kansioiden sijainteihin.

SDL:n käyttämiseksi on myös määriteltävä linkkerille, mitä kirjastoja käytetään. Tämä tehdään valitsemalla ‘Linker’, sitten ‘Input’ ja lisäämällä ‘Additional Dependencies’ -kohtaan tarvittavat kirjastot. SDL:n peruskäyttöön riittää lisätä ‘SDL2.lib’ ja ‘SDL2main.lib’.

Kun projekti on asetettu käyttämään SDL:ää, voidaan alkaa rakentamaan itse ohjelmaa. Luodaan ensin pari osoitinmuuttujaa. SDL-ikkunalle ja SDL-surfacelle.

SDL_Window* window = NULL;

Tämä osoitin määritellään aluksi NULL-arvoon. SDL käyttää C-tyylistä syntaksia, koska se on koodattu C:llä, mutta se on yhteensopiva C++:n kanssa.

Lisäksi luodaan SDL_Surface-osoitin, esimerkiksi…

SDL_Surface* screenSurface = NULL;

SDL_Surface toimii piirtoalustana, jolle voidaan piirtää graafisia elementtejä. SDL käyttää näitä pintoja (surface) grafiikan käsittelyyn.

Näiden asetusten avulla SDL on integroitu projektiin ja valmis käytettäväksi.

Keskustelu

Aloita uusi keskustelu