Miten luoda 2D-pelin Python ja Arcade-kirjasto

Python on erinomainen kieli-ihmisiä, oppimisen ohjelma, ja täydellinen kaikille, jotka haluavat ”hoidan hommat”, ja ei viettää paljon aikaa boilerplate-koodia. Arcade on Python kirjasto luoda 2D Videopelejä, joka on helppo aloittaa käyttämällä, ja erittäin pystyy kuin saat kokemusta. Tässä artikkelissa, selitän, miten alkaa käyttää Python ja Arcade ohjelmoida videopelejä.

aloitin kehitystyön Arcade-palvelussa opetettuaan pygame-kirjastoa käyttäviä oppilaita., Opetin henkilökohtaisesti PyGame lähes 10 vuotta, ja kehitin ProgramArcadeGames.com opettaa verkossa. PyGame on mahtava, mutta lopulta tuntui, että tuhlasin aikaa siihen, että jouduin peittämään vikoja, joita ei koskaan korjattu.

pelkäsin, että opetan sellaisia asioita kuin tapahtumasilmukka, joka ei ollut enää se tapa, jolla koodaamme. Minulla oli kokonainen osio, jossa selitin, miksi y-koordinaatit olivat päinvastaiset. Koska PyGame oli harvoin päivitetty ja se perustuu vanhaan SDL-1 kirjasto, pikemminkin kuin jotain enemmän moderni, kuten OpenGL, en pidä paljon toivoa tulevaisuudesta.,

halusin kirjasto, joka oli helpompi käyttää, enemmän voimakas, ja käyttää joitakin uusia ominaisuuksia Python 3, kuin sisustussuunnittelijan ja tyyppi-vihjaten. Arcade on se. Näin pääset alkuun.

Asennus

Arcade, kuten monet muut paketit, on saatavilla PyPi, joka tarkoittaa, että voit asentaa Arcade käyttäen pip komento (tai pipenv komento)., Jos sinulla on jo Python asennettu, voit todennäköisesti vain avata komentorivi Windows ja tyyppi:

pip install arcade

– Tai MacOS-ja Linux-tyyppi:

pip3 install arcade

tarkemmat asennusohjeet, voit viitata Arcade asennuksen dokumentointi.

Yksinkertainen piirustus

Voit avata ikkunan ja luoda yksinkertaisia piirustuksia kanssa vain muutaman rivin koodia. Luodaan esimerkki, joka piirtää hymiö kasvot, kuten kuvassa alla:

script alla näyttää, miten voit käyttää Arcade piirustus komentoja, voit tehdä tämän., Huomaa, että sinun ei tarvitse tietää, miten käyttää luokkia tai edes määritellä toimintoja. Ohjelmointi nopealla visuaalisella palautteella on hienoa kaikille, jotka haluavat aloittaa ohjelmoinnin.

funktioiden

avulla koodin kirjoittaminen globaalissa kontekstissa ei tietenkään ole hyvä muoto. Onneksi parantaa ohjelmaa käyttämällä toimintoja on helppoa. Täällä voimme nähdä esimerkki piirustus mänty tiettyyn (x, y) sijainti käyttämällä toiminto:

täydellinen esimerkki, ks. piirustus toimintoja.,

kokeneempi ohjelmoija tietää, että moderni grafiikka ohjelmia ensin ladata piirustus tiedot päälle näytönohjain, ja sitten pyytää näytönohjain piirtää sitä myöhemmin erän. Arcade tukee myös tätä. 10 000 suorakulmion piirtäminen yksitellen kestää noin 0,800 sekuntia. Niiden piirtäminen eränä vie vähemmän, että 0.001 sekuntia.

Window class

Suurempia ohjelmia on tyypillisesti peräisin Ikkuna luokan, tai käyttää sisustussuunnittelijan. Tämän avulla ohjelmoija kirjoittaa koodia käsitellä piirustus, päivittäminen ja käsittely käyttäjän syötettä., Alla on malli Window – pohjaiselle ohjelmalle.

Window luokka on useita menetelmiä, että ohjelmia voi ohittaa tarjota toiminnallisuus ohjelman. Tässä muutamia yleisimmin käytetty niistä:

  • on_draw: Kaikki koodi piirtää näyttö menee täällä.
  • update: Kaikki koodi siirtää kohteita ja suorittaa pelin logiikka menee tässä. Tätä kutsutaan noin 60 kertaa sekunnissa.,
  • on_key_press: Käsittele tapahtumia, kun näppäintä painetaan, kuten antamalla pelaajan nopeus.
  • on_key_release: Kahvasta kun avain vapautetaan, täällä et voi lopettaa pelaajan päässä liikkuu.
  • on_mouse_motion: Tätä kutsutaan aina, kun hiiri liikkuu.
  • on_mouse_press: Kutsutaan, kun hiiren painiketta painetaan.
  • set_viewport: Tämä toiminto käytetään vieritys pelejä, kun sinulla on maailmassa paljon suurempi kuin mitä voidaan nähdä yhdellä näytöllä., Kutsuen set_viewport sallii ohjelmoijan asettaa, mikä osa tuosta maailmasta on tällä hetkellä näkyvissä.

Sprite

Sprite ovat helppo tapa luoda 2D bitmap esine Arcade. Arcade on menetelmiä, jotka tekevät helppo piirtää, liikkua ja animoida sprites. Spriteillä voi myös helposti havaita esineiden välisiä törmäyksiä.

Spriten luominen

Arcaden Sprite-luokan luominen graafisesta on helppoa. Ohjelmoija tarvitsee vain kuvan tiedostonimen, jonka avulla sprite voidaan perustaa, ja vaihtoehtoisesti numeron, jolla kuva voidaan skaalata ylös-tai alaspäin., Esimerkiksi:

SPRITE_SCALING_COIN = 0.2
coin = arcade.Sprite("coin_01.png", SPRITE_SCALING_COIN)

Tämä koodi luo sprite käyttämällä kuva tallennetaan coin_01.png. Kuva skaalataan 20%: iin alkuperäisestä korkeudestaan ja leveydestään.

Sprite luettelot

Spritet ovat yleensä järjestetty luetteloihin. Nämä luettelot helpottavat spritejen hallintaa. Sprites luettelossa käyttää OpenGL erä-piirtää sprites ryhmänä. Alla oleva koodi asettaa pelin pelaajan kanssa, ja kasan kolikoita pelaajan kerättäväksi. Käytämme kahta listaa, toista pelaajalle ja toista kolikoille.,

Voimme helposti tehdä kaikki kolikot kolikon luetteloita:

def on_draw(self):
""" Draw everything """
arcade.start_render()
self.coin_list.draw()
self.player_list.draw()

Havaita sprite törmäykset

toiminto check_for_collision_with_list antaa meille mahdollisuuden nähdä, jos sprite toimii toiseen sprite-luettelossa. Voimme käyttää tätä nähdä kaikki kolikot pelaaja sprite on kosketuksissa. Käyttämällä yksinkertaista for silmukka, voimme päästä eroon kolikon peli ja lisätä pisteet.

täydellinen esimerkki, ks. collect_coins.py.

Pelin fysiikka

Monet pelit ovat jonkinlainen fysiikan., Yksinkertaisimpia ovat ylhäältä alas-ohjelmat, jotka estävät pelaajaa kävelemästä seinien läpi. Tasohyppelyt lisäävät monimutkaisuutta painovoimalla ja liikkuvilla alustoilla. Joissakin peleissä käytetään täyttä 2D-fysiikkamoottoria, jossa on massaa, kitkaa, jousia ja paljon muuta.

Top-down-pelit

yksinkertaisissa ylhäältä alas-pohjaisissa peleissä Arcade-ohjelma tarvitsee listan seinistä, joiden läpi pelaaja (tai mikään muu) ei voi liikkua. Kutsun tätä yleensä wall_list., Sitten fysiikka moottori, joka on luotu Window luokan setup-koodi:

self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list)

player_sprite annetaan liikkeen vektori ja sen kaksi ominaisuudet change_x ja change_y. Yksinkertainen esimerkki tästä olisi saada pelaaja liikkumaan näppäimistöllä. Tämä voi esimerkiksi olla mukautettu lapsi Window class:

Vaikka tämä koodi asettaa pelaajan nopeus, se ei liiku pelaaja., update tapa Window luokka, kutsuen physics_engine.update() siirtyy pelaaja, mutta ei seinien läpi.

def update(self, delta_time):
""" Movement and game logic """
self.physics_engine.update()

täydellinen esimerkki ks. sprite_move_walls.py.

Platformers

Liikkuu sivulta katsottuna peli on melko helppoa. Ohjelmoija tarvitsee vain vaihtaa fysiikkamoottori PhysicsEnginePlatformer ja lisää on painovoima vakio.

self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
self.wall_list,
gravity_constant=GRAVITY)

Voit käyttää ohjelmaa, kuten Kaakeloitu laatoitus/lohkoja, jotka muodostavat oman tason.

esimerkiksi katso sprite_tiled_map.,py.

täydelle 2D-fysiikalle voit integroida PyMunk-kirjaston.

Oppia esimerkki

Yksi parhaista tavoista oppia, on esimerkki. Arcade-kirjastossa on pitkä lista esimerkkiohjelmia, joita ihminen voi hyödyntää pelien luomiseen. Nämä esimerkit osoittavat jokainen peli käsite, että opiskelijat ovat pyytäneet minun luokat tai verkossa vuosien varrella.

Käynnissä tahansa näistä demoja on helppoa, kun Arcade on asennettu., Jokainen näyte on kommentin alussa ohjelma komennolla voit kirjoittaa komentorivin ajaa näyte, esimerkiksi:

python -m arcade.examples.sprite_moving_platforms

Tiivistelmä

Arcade voit aloittaa ohjelmointi-grafiikka ja pelejä, helppo ymmärtää koodin. Monet uudet ohjelmoijat ovat luoneet hienoja pelejä pian aloittamisen jälkeen. Kokeile!

saadaksesi lisätietoja, osallistu Paul Vincent Cravenin talk, Easy 2d-pelin luomiseen Arcade-pelillä, PyCon Clevelandissa 2018.

Share

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *