Ako programovať počítačové hry (s obrázkami)

Obsah:

Ako programovať počítačové hry (s obrázkami)
Ako programovať počítačové hry (s obrázkami)
Anonim

Máte nápad na počítačovú hru a chcete ju uskutočniť? Alebo ste sa niekedy zamýšľali nad tým, ako sú počítačové hry napísané? Tento wikiHow vás naučí písať tri základné počítačové hry v Pythone. Na vývoj svojej prvej hry budete potrebovať základné znalosti jazyka Python a všeobecné programovacie koncepty.

Kroky

Časť 1 z 3: Vytvorenie textovej hry

5692759 1
5692759 1

Krok 1. Vyberte programovací jazyk

Všetky programovacie jazyky sú rôzne, takže sa budete musieť rozhodnúť, ktorý použijete na napísanie hry. Každý hlavný programovací jazyk podporuje zadávanie textu, textový výstup a konštrukcie if (hlavné veci, ktoré potrebujete pre jednoduchú textovú hru), preto si prezrite možnosti a rozhodnite sa, v čom sa cítite najpohodlnejšie a najradšej sa učíte. Tu je niekoľko faktorov, ktoré je potrebné zvážiť:

  • Na čo sa jazyk najčastejšie používa?

    Niektoré programovacie jazyky, ako napríklad JavaScript, sú navrhnuté na použitie na webe, zatiaľ čo iné, ako napríklad Python, C alebo C ++, sú určené na spúšťanie počítačových programov. Vo svojej hre sa snažte nájsť jazyk so širším rozsahom použitia, ako napríklad Python, C, C ++ alebo JavaScript.

  • Aké ťažké je naučiť sa?

    Napriek tomu, že písanie programu by malo byť dostatočne jednoduché po precvičení v akomkoľvek normálnom programovacom jazyku (tj. Nie v takom, ktorý by bol špeciálne navrhnutý tak, aby bol mätúci ako Malbolge), niektoré sú pre začiatočníkov priateľskejšie ako ostatné. Napríklad Java a C od vás budú vyžadovať porozumenie hlbším konceptom programovania ako niečo ako Python, ktorý je známy svojou prístupnejšou a jednoduchšou syntaxou.

  • Kde ho môžem použiť?

    Pravdepodobne chcete, aby vašu hru mohli hrať ľudia na rôznych systémoch, ako sú Linux, Mac alebo Windows. Nemali by ste preto používať jazyk, ktorý je podporovaný iba v niekoľkých systémoch, napríklad Visual Basic, ktorý je podporovaný iba v systéme Windows.

Tento článok použije Python na príklady textovej hry, ale môžete sa pozrieť na to, ako sa koncepty vykonávajú v akomkoľvek inom programovacom jazyku.

5692759 2
5692759 2

Krok 2. Pripravte si počítač

Dve hlavné komponenty, ktoré budete potrebovať, sú textový editor, do ktorého napíšete kód, a kompilátor, pomocou ktorého z neho urobíte hru. Ak chcete nasledovať príklad v tomto článku, mali by ste si nainštalovať Python a naučiť sa spúšťať programy. Ak chcete, môžete si nastaviť IDE (Integraded Desktop Environment), ktoré kombinuje úpravu, kompiláciu a ladenie do jedného programu. IDE v Pythone sa nazýva IDLE. Môžete však tiež použiť ľubovoľný textový editor, ktorý podporuje obyčajný text, napríklad Poznámkový blok pre Windows, TextEdit pre macOS alebo Vim pre Linux.

5692759 3
5692759 3

Krok 3. Napíšte nejaký kód na pozdrav hráča

Hráč bude chcieť vedieť, čo sa deje a čo má robiť, preto by ste mu mali vytlačiť nejaký text.

  • To sa deje pomocou funkcie print () v Pythone. Ak to chcete vyskúšať, otvorte nový súbor s príponou.py, zadajte doň nasledujúci kód, uložte ho a spustite:

    vytlačiť („Vitajte v hre na hádanie čísel!“) vytlačiť („Zadajte celé číslo od 1 do 1 000:“)

5692759 4
5692759 4

Krok 4. Vygenerujte náhodné číslo

Vytvorme textovú hru, ktorá hráča vyzve, aby uhádol správne číslo. Prvá vec, ktorú musíme urobiť, je vygenerovať náhodné číslo na začiatku hry, aby hráč vždy nehádal rovnaké číslo. Pretože číslo zostane v celom programe rovnaké, budete chcieť uložiť náhodné číslo do premennej.

  • Python nemá v sebe zabudovanú funkciu náhodných čísel, ale má štandardnú knižnicu (to znamená, že používateľ nebude musieť inštalovať nič extra), ktorá áno. Prejdite teda na začiatok kódu (pred funkcie print ()) a napíšte náhodný import riadka.
  • Použite funkciu náhodného výberu. Hovorí sa mu randint (), je v náhodnej knižnici, ktorú ste práve importovali, a ako argument berie minimálnu a maximálnu hodnotu, ktorú číslo môže mať. Vráťte sa teda na koniec kódu a zadajte nasledujúci riadok:

    rightNum = random.randint (0, 1000)

5692759 5
5692759 5

Krok 5. Získajte informácie od hráča

V hre chce hráč niečo urobiť alebo s niečím komunikovať. V textovej hre je to možné zadaním textu. Teraz, keď máme náhodné číslo, naše nasledujúce riadky kódu by mali hráča požiadať, aby zadal svoj najlepší odhad.

  • Pretože kód, ktorý ste zadali, vytlačí hráčovi pokyn na zadanie čísla, mal by tiež čítať číslo, ktoré zadá. To sa robí pomocou input () v Pythone 3 a raw_input () v Pythone 2. Mali by ste písať v Pythone 3, pretože Python 2 bude čoskoro zastaraný. Pridajte do svojho kódu nasledujúci riadok, aby sa vstup hráča uložil do premennej nazývanej číslo:

    userNum = vstup ()

5692759 6
5692759 6

Krok 6. Premeňte vstup prehrávača na použiteľný dátový typ

Hráč zadal číslo-čo teraz?

  • Urobte z vstupu hráča číslo. Teraz to môže znieť mätúco, pretože práve zadali číslo. Existuje však dobrý dôvod: Python predpokladá, že všetok vstup je text alebo „reťazec“, ako sa tomu hovorí v programovaní. Tento text obsahuje číslo, ktoré chcete získať. Python má funkciu, ktorá prevádza reťazec, ktorý obsahuje iba číslo, na číslo vo vnútri. Typ:

    userNum = int (userNum)

5692759 7
5692759 7

Krok 7. Porovnajte číslo hráča so správnym číslom

Akonáhle hráč zadá svoje číslo, budete ho musieť porovnať s tým, ktoré bolo náhodne vygenerované. Ak čísla nie sú rovnaké, vaša hra môže hráča prinútiť skúsiť iné číslo. Ak sa čísla zhodujú, môžete hráčovi povedať, že uhádol správne, a ukončiť program. To sa vykonáva pomocou nasledujúceho kódu:

zatiaľ čo userNum! = rightNum: userNum = int (input ())

5692759 8
5692759 8

Krok 8. Poskytnite hráčovi spätnú väzbu

Aj keď ste už spracovali ich vstup, prehrávač to neuvidí. Výsledky budete musieť skutočne vytlačiť hráčovi, aby porozumel tomu, čo sa deje.

  • Iste by ste mohli hráčovi povedať, či je jeho číslo správne alebo nesprávne. Ale s týmto prístupom by hráč musel v najhoršom prípade hádať 1000 krát, čo by bolo veľmi nudné.
  • Povedzte hráčovi, či je ich počet príliš malý alebo veľký. Tým sa výrazne zníži ich počet hádaní. Ak napríklad hráč uhádne najskôr 500 a hra odpovie „Príliš veľké. Skúste to znova“, namiesto 1 000 bude existovať iba 500 možných čísel. To sa deje s konštrukciami if-if, preto nahraďte tlač („Nesprávne. Skúste to znova. “) S jedným.
  • Uvedomte si, že kontrola, či sú dve čísla rovnaké, sa robí s ==, nie s =. = priradí hodnotu napravo od premennej naľavo od nej!
  • if userNum <rightNum: print ("Too small. Try again:") if userNum> rightNum: print ("Too big. Try again:")

5692759 9
5692759 9

Krok 9. Otestujte svoj kód

Ako programátor by ste si mali byť istí, že váš kód funguje, skôr ako ho považujete za dokončený.

  • Pri programovaní v pythone dbajte na to, aby boli odsadenia správne. Váš kód by mal vyzerať takto:

    import random print („Vitajte v hre na hádanie čísel!“) print („Zadajte celé číslo od 1 do 1000:“) rightNum = random.randint (0, 1000) userNum = input () userNum = int (userNum) while userNum! = rightNum: if userNum <rightNum: print ("Too small. Try again:") if userNum> rightNum: print ("Too big. Try again:") userNum = int (input ()) print ("Hádali ste správne. ")

5692759 10
5692759 10

Krok 10. Overte zadanie

Hráč by nemal byť schopný prerušiť vašu hru jednoduchým zadaním nesprávnej veci. „Overenie zadania“znamená uistenie sa, že hráč zadal správnu vec pred jej spracovaním.

  • Otvorte hru znova a skúste zadať čokoľvek, čo nie je číslo. Hra skončí s ValueError. Aby ste tomu zabránili, môžete implementovať spôsob, ako skontrolovať, či bolo zadané číslo.
  • Definujte funkciu. Pretože validácia vstupu je dosť dlhá a musíte to urobiť viackrát, mali by ste definovať funkciu. Nevyžaduje žiadne argumenty a vráti číslo. Najprv napíšte def numInput (): do hornej časti kódu, priamo pod náhodný import.
  • Získajte vstup od hráča raz. Použite funkciu input () a výsledok priraďte premennej inp.
  • Ak nie je hráč zadaný ako číslo, požiadajte ho o zadanie čísla. Ak chcete skontrolovať, či je reťazec číslo, použite funkcie isdigit (), ktoré povoľujú iba celé číslo, takže ich nebudete musieť kontrolovať osobitne.
  • Ak je vstupom číslo, skonvertujte ho z reťazca na číslo a vráťte výsledok. Na konverziu reťazca na celé číslo použite funkciu int (). Vďaka tomu bude konverzia v hlavnom kóde zbytočná a mali by ste ju odtiaľ odstrániť.
  • Nahradiť všetky hovory na vstup () v hlavnom kóde hovormi na numInput ().
  • Kód funkcie numInput () bude vyzerať takto:
  • def numInput (): inp = input () while not inp.isdigit (): print ("Bolo vám povedané zadať celé číslo! Zadajte celé číslo:") inp = input () return int (inp)

5692759 11
5692759 11

Krok 11. Hru znova vyskúšajte

Zámerne zadajte nesprávne veci, aby ste videli, čo sa stane, a potom opravte všetky chyby, keď sa objavia.

Skúste zadať text, keď vás program požiada o číslo. Teraz, namiesto toho, aby vás program ukončil s chybovým hlásením, vás znova požiada o číslo

5692759 12
5692759 12

Krok 12. Navrhnite reštartovanie hry, keď sa skončí

Hráč tak mohol hrať vašu hru dlhší čas bez toho, aby ju musel neustále reštartovať.

  • Vložte celý kód okrem importu a definície funkcie do cyklu cyklu. Ako podmienku nastavte True: toto bude vždy platiť, takže slučka bude pokračovať navždy.
  • Po správnom uhádnutí čísla sa hráča opýtajte, či chce hrať znova. Použite funkciu print ().
  • Ak odpovedia „nie“, vypadnite z pohľadu. Ak odpovedajú na čokoľvek iné, pokračujte. Vyrazenie zo slučky sa vykoná pomocou príkazu break.
  • Presuňte „Vitajte v hre na hádanie čísel“mimo cyklus while. Hráč pravdepodobne nechce byť vítaný pri každom hraní hry. Presuňte tlač s pokynmi („Vitajte v hre na hádanie čísel!“Nad možnosť True:, takže sa vytlačí iba raz, keď používateľ začne prvú hru.
5692759 13
5692759 13

Krok 13. Vyskúšajte hru

Svoju hru budete musieť vyskúšať vždy, keď implementujete novú funkciu.

  • Nezabudnite odpovedať aspoň raz „áno“aj „nie“, aby ste sa presvedčili, že obe možnosti fungujú. Váš kód by mal vyzerať takto:

    import random def numInput (): inp = input () while not inp.isdigit (): print ("Bolo vám povedané zadať celé číslo! Zadajte celé číslo:") inp = input () return int (inp) print („Vitajte v hre na hádanie čísel!“) Pri True: print („Zadajte celé číslo od 1 do 1000:“) rightNum = random.randint (0, 1000) userNum = numInput () while userNum! = RightNum: if userNum <rightNum: print ("Príliš malý. Skúste to znova:") ak userNum> rightNum: print ("Príliš veľký. Skúste to znova:") userNum = numInput () print ("Uhádli ste správne.") print ("Myslíte si chcete hrať znova? Ak chcete ukončiť, zadajte Nie. ") ak vstup () ==" Nie ": prestávka

5692759 14
5692759 14

Krok 14. Napíšte ďalšie textové hry

Čo tak napísať textovú adventúru ďalej? Alebo kvízová hra? Buď kreatívny.

Tip: Niekedy je užitočné nahliadnuť do dokumentácie, ak si nie ste istí, ako sa niečo robí alebo ako sa používa funkcia. Dokumentácia k Pythonu 3 sa nachádza na https://docs.python.org/3/. Dobré výsledky niekedy prináša aj hľadanie toho, čo chcete na internete robiť.

Časť 2 z 3: Tvorba hry s 2D grafikou

5692759 15
5692759 15

Krok 1. Vyberte grafickú knižnicu

Vytváranie grafiky je veľmi komplikované a väčšina programovacích jazykov (vrátane Pythonu, C ++, C, JavaScript) poskytuje iba minimálnu alebo dokonca žiadnu podporu grafiky v jadre alebo štandardných knižniciach. Na vytváranie grafiky, napríklad Pygame pre Python, budete teda musieť použiť externú knižnicu.

Aj pri grafickej knižnici si budete musieť lámať hlavu s tým, ako napríklad zobraziť ponuku, ako skontrolovať, na čo hráč klikol, ako zobraziť dlaždice a podobne. Ak sa chcete radšej zamerať na vývoj skutočnej hry, môžete použiť knižnicu herných engine, ako je Unity, ktorá tieto veci ľahko implementuje

Tento článok použije Python s Cocos2D a ukáže vám, ako vytvoriť jednoduchú 2D plošinovku. Niektoré zo spomenutých konceptov nemusia existovať v iných herných engine. Ďalšie informácie nájdete v ich dokumentácii.

5692759 16
5692759 16

Krok 2. Nainštalujte zvolenú grafickú knižnicu

Inštalácia programu Cocos2D pre Python je jednoduchá. Môžete ho získať z https://python.cocos2d.org/index.html alebo spustením sudo pip3 install cocos2d, ak používate Linux.

5692759 17
5692759 17

Krok 3. Vytvorte nový adresár pre svoju hru a médiá

Vo svojej hre budete používať veci ako obrázky a zvuky. Uchovávajte tieto veci v rovnakom adresári ako program. Tento adresár by nemal obsahovať nič iné, aby ste mohli ľahko vidieť, aké prostriedky v hre máte.

5692759 18
5692759 18

Krok 4. Vytvorte nový súbor kódu v novom adresári

Nazvite to hlavné s príponou súboru pre váš programovací jazyk. Ak píšete veľký a komplexný program, v ktorom má zmysel mať viac programových súborov, ukáže sa vám, ktorý je hlavný súbor.

V tomto prípade vytvoríme súbor s názvom main.py, ktorý bude obsahovať celý náš kód

5692759 19
5692759 19

Krok 5. Vytvorte herné okno

To je základný predpoklad pre hru s grafikou.

  • Importujte potrebné podmoduly cocos2d: cocos.director, cocos.scene a cocos.layer. To sa vykonáva pomocou importu subModuleName *, kde názov submodulu je submodul, ktorý chcete importovať. Rozdiel medzi … import * a import … je ten, že nemusíte dávať názov modulu pred všetko, čo používate z toho modulu s prvým.
  • Definujte podtriedu MainMenuBgr of the ColorLayer. To v zásade znamená, že akékoľvek pozadie hlavnej ponuky, ktoré vytvoríte, sa pri niektorých zmenách, ktoré urobíte, bude správať ako farebná vrstva.
  • Spustite riaditeľ cocos. Tým sa vám otvorí nové okno. Ak nenastavíte popis, okno bude mať rovnaký nadpis ako názov súboru (main.py), čo nebude pôsobiť profesionálne. Umožnite zmenu veľkosti okna nastavením zmeny veľkosti na hodnotu True.
  • Definujte funkciu showMainMenu. Kód na zobrazenie hlavnej ponuky by ste mali vložiť do funkcie, pretože vám to umožní ľahký návrat do hlavnej ponuky opätovným volaním funkcie.
  • Vytvorte scénu. Scéna zatiaľ pozostáva z jednej vrstvy, ktorá je objektom triedy MainMenuBgr, ktorú ste definovali.
  • Spustite túto scénu v okne.
  • z cocos.director import * from cocos.scene import * from cocos.layer import * class MainMenuBgr (ColorLayer): def _init _ (self): super (MainMenu, self)._ init _ (0, 200, 255, 255) def showMainMenu (): menuSc = Scene (MainMenuBgr ()) director.run (menuSc) director.init (caption = "IcyPlat - a simple platformer", resizable = True) showMainMenu ()

5692759 20
5692759 20

Krok 6. Do okna pridajte hlavnú ponuku

Okrem samotnej hry budete musieť pridať aj ponuku, ktorú môže hráč použiť na zatvorenie okna, okrem iných prvkov, ktoré môžete pridať neskôr.

  • Importujte cocos.menu (opäť s inštrukciou from) a pyglet.app (tentokrát s importom).
  • Definujte MainMenu ako podtriedu Menu.
  • Nastavte zarovnanie hlavnej ponuky. Vertikálne a horizontálne zarovnanie musíte nastaviť oddelene.
  • Vytvorte zoznam položiek ponuky a pridajte ich do ponuky. Mali by ste mať minimálne položky ponuky „Spustiť hru“a „Ukončiť“. Každá položka ponuky by mala byť umiestnená v zátvorkách. Každá položka musí mať štítok a funkciu spätného volania, ktorá určuje, čo sa stane, keď na ňu hráč klikne. Pri položke „Spustiť hru“použite funkciu startGame (čoskoro ju napíšete), pri položke „Ukončiť“použite „pyglet.app.exit“(už existuje). Vytvorte aktuálnu ponuku volaním self.create_menu (menuItems).
  • Definujte startGame (). Nateraz vložte definíciu, nahradíte ju pri písaní skutočnej hry.
  • Prejdite na miesto v kóde, kde ste vytvorili scénu menuSc, a pridajte do nej objekt MainMenu.
  • Celý váš kód by teraz mal vyzerať nasledovne:

    z cocos.director import * from cocos.menu import * from cocos.scene import * from cocos.layer import * import pyglet.app class MainMenuBgr (ColorLayer): def _init _ (self): super (MainMenuBgr, self)._ init _ (0, 200, 255, 255) trieda MainMenu (Menu): def _init _ (self): super (MainMenu, self)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Start Game ", startGame)), (MenuItem (" Quit ", pyglet.app.exit))] self.create_menu (menuItems) def startGame (): pass def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) director.run (menuSc) director.init (caption = "IcyPlat - a simple platformer", resizable = True) showMainMenu ()

5692759 21
5692759 21

Krok 7. Otestujte svoj kód

Vyskúšajte kód včas, hoci je stále krátky a relatívne jednoduchý. Potom môžete identifikovať a opraviť všetky chyby v základnej štruktúre skôr, ako sa veci začnú komplikovať.

Kód z pokynov by mal otvoriť okno s titulkom „IcyPlat - jednoduchá plošinovka“. Pozadie je svetlo modré a veľkosti okna môžete zmeniť. Keď v ponuke kliknete na „Spustiť hru“, nemalo by sa (zatiaľ) nič stať. Keď kliknete na „Ukončiť“, okno sa zatvorí

5692759 22
5692759 22

Krok 8. Vytvorte sprite

Sprite je „herný objekt“alebo dvojrozmerný obrázok. Skřítci môžu byť objekty v hre, ikony, dekorácie pozadia, postavy a čokoľvek iné, čo môžete znázorniť obrázkom v hre. Začneme vytvorením škriatka pre postavu, s ktorou môže hráč komunikovať.

  • Importujte submodul cocos.sprite s výrazom z-import-výraz.
  • Nájdite obrázok, ktorý bude predstavovať škriatka. Škriatka nemôžete zobraziť, ak k nemu nemáte obrázok. Môžete si ho nakresliť alebo ho môžete získať z internetu (dávajte si však pozor na licencie, ak plánujete vydať svoju hru). V tomto prípade choďte na https://opengameart.org/content/tux-classic-hero-style a uložte si obrázok-p.webp" />
  • Vytvorte vrstvu ako nový objekt triedy ScrollableLayer. Potom vytvorte sprite ako objekt Sprite a nastavte jeho polohu na (8, 250). Pre referenciu je bod (0, 0) v ľavom dolnom rohu. To je dosť vysoké, ale postará sa o to, aby tučniak nezostal uviaznutý v ľade.
  • Pridajte škriatka do vrstvy sprite.
  • Vytvorte novú scénu z vrstvy sprite a spustite ju.
  • def startGame (): figLayer = ScrollableLayer () fig = Sprite ('pingu.png') fig.position = (75, 100) figLayer.add (obr) # gameSc = Scene (figLayer) director.run (gameSc)

  • Spustite kód. Po kliknutí by ste mali na čiernom pozadí vidieť malú postavu tučniaka (alebo čokoľvek iné, čo ste nakreslili) Začať hru.
5692759 23
5692759 23

Krok 9. Snívajte o svojej krajine

Vo väčšine hier by sa vaši škriatkovia nemali len vznášať v prázdnote. V skutočnosti by mali stáť na nejakom povrchu s niečím okolo nich. V 2D hrách sa to často robí pomocou sady dlaždíc a mapy dlaždíc. Sada dlaždíc v zásade hovorí o tom, aké povrchové štvorce a štvorce pozadia existujú a ako vyzerajú.

  • Vytvorte sadu dlaždíc. Sada dlaždíc pre túto hru bude veľmi základná: jedna dlaždica na ľad a jedna dlaždica na oblohu. Ľadové dlaždice použité v tomto prípade sú odtiaľto, pod CC-BY-SA 3.0.
  • Vytvorte obrázok sady dlaždíc. Toto je obrázok všetkých dlaždíc, ktoré musia mať všetky rovnakú veľkosť (ak nie sú, upravte ich) a musia mať takú veľkosť, akú chcete v hre vidieť, vedľa seba. Uložte svoj obrázok ako icyTiles.png.
  • Vytvorte popis sady dlaždíc. Je to súbor XML. Súbor XML obsahuje informácie o tom, aké veľké sú dlaždice na obrázku sady dlaždíc, ktorý obrázok sa má použiť a kde sa nachádza dlaždica. Vytvorte súbor XML s názvom icyTiles.xml pomocou nižšie uvedeného kódu:

         
    
5692759 24
5692759 24

Krok 10. Vytvorte pre svoju krajinu dlaždicovú mapu

Dlaždičková mapa je mapa, ktorá definuje, ktorá dlaždica sa nachádza na ktorej pozícii na vašej úrovni. V tomto prípade by ste mali definovať funkciu generovania máp, pretože ručné navrhovanie máp je veľmi únavné. Pokročilejšia hra by zvyčajne mala nejaký druh editora úrovní, ale na zoznámenie sa s vývojom 2D hier môže algoritmus poskytnúť dostatočne dobré úrovne.

  • Zistite, koľko riadkov a stĺpcov je potrebných. Za týmto účelom vydelte veľkosť obrazovky veľkosti dlaždíc horizontálne (stĺpce) a vertikálne (riadky). Zaokrúhlite číslo nahor; Na to potrebujete funkciu matematického modulu, takže pridajte z matematického importného stropu k importom v hornej časti kódu.
  • Otvorte súbor na zápis. Toto vymaže všetok predchádzajúci obsah súboru, preto zvoľte názov, ktorý ešte žiadny súbor v adresári nemá, napríklad levelMap.xml.
  • Do súboru napíšte úvodné značky.
  • Vygenerujte mapu dlaždíc podľa algoritmu. Ten použijete v nižšie uvedenom kóde, alebo si naň môžete prísť sami. Uistite sa, že importujete funkciu randint z modulu náhodne: je potrebný, aby kód uvedený nižšie fungoval a čokoľvek, s čím prídete, bude pravdepodobne potrebovať aj náhodné celé čísla. Nezabudnite tiež dať obklady a ľadové dlaždice do rôznych vrstiev: ľad je pevný, obloha nie.
  • Zapíšte záverečné značky do súboru a zatvorte súbor.
  • def generateTilemap (): colAmount = ceil (800/16) * 3 # (šírka obrazovky / veľkosť dlaždice) * 3 rowAmount = ceil (600/16) # výška obrazovky / veľkosť dlaždice tileFile = otvorený ("levelMap.xml", " w ") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) pre i v rozsahu (0, colAmount): tileFile.write ('') makeHole = False if randint (0, 50) == 10 a i! = 0: # neumožňujú otvory v mieste spawn makeHole = True pre j v rozsahu (0, rowAmount): if makeHole: tileFile.write ('\ n') else: if j <= iceHeight: tileFile.write ('\ n') else: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) if iceHeight <0: # obmedzuje chodníky príliš nízke iceHeight = randint (1, 5) if iceHeight> rowAmount: # limit tiles from too too high iceHeight = randint (int (rowAmount/2) -5, int (rowAmount/2) +5) tileFile.write ('\ n') tileFile.write ('\ n / n') pre i v rozsahu (0, colAmount): tileFile.write ('') pre j v rozsahu (0, rowAmount): tileFile.write ('\ n') tileFile.write ('\ n ') tileFile.write (' / n / n ') tileFile.close ()

5692759 25
5692759 25

Krok 11. Zobrazte mapu dlaždíc

Importujte všetko z cocos.tiles a potom choďte na to do funkcie startGame.

  • Na začiatku funkcie startGame vygenerujte mapu dlaždíc pomocou funkcie, ktorú ste pre to definovali.
  • Vytvorte nového správcu posúvania. Vykonajte to priamo pod čiarou, do ktorej pridáte sprite do jeho vrstvy.
  • Vytvorte novú vrstvu obsahujúcu dlaždice, ktoré sa načítajú z mapy dlaždíc levelMap.xml, ktorú vygenerovala vaša funkcia generateTilemap.
  • Pridajte nepevnú vrstvu, plnú vrstvu a vrstvu sprite do správcu posúvania, presne v tomto poradí. Ak chcete, môžete pridať pozíciu z.
  • Namiesto vytvárania scény z vrstvy sprite ju vytvorte v správcovi posúvania.
  • Vaša funkcia startGame by teraz mala vyzerať takto:

    def startGame (): generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 500) figLayer = ScrollableLayer () figLayer.add (obr) # tileLayer = load ('levelMap.xml') solidTiles = tileLayer ['solid'] nsoliTiles = tileLayer ['not_solid'] # scrMang = ScrollingManager () scrMang.add (nsoliTiles, z = -1) scrMang.add (solidTiles, z = 0) scrMang.add (figLayer, z = 1) # gameSc = scéna (scrMang) director.run (gameSc)

5692759 26
5692759 26

Krok 12. Otestujte svoj kód

Kód by ste mali často testovať, aby ste sa presvedčili, že nové funkcie, ktoré ste implementovali, skutočne fungujú.

Kód v príklade by teraz mal zobrazovať ľadovú krajinu za tučniakom. Ak tučniak vyzerá, že sa vznáša ďaleko nad ľadom, neurobili ste nič zlé a v nasledujúcom kroku to bude napravené

5692759 27
5692759 27

Krok 13. Pridajte ovládacie prvky

Hráč má oveľa viac spôsobov interakcie s programom v 2D hre ako v textovej hre. Bežný obsahuje pohyb ich figúrky po stlačení správneho klávesu.

  • Importujte všetko z Cocos.mapcolliders a from cocos.action. Importujte tiež kľúč z pyglet.window.
  • „Deklarujte“niektoré globálne premenné. Globálne premenné sú zdieľané medzi funkciami. V Pythone nemôžete skutočne deklarovať premenné, ale musíte povedať, že globálna premenná existuje v hlavnom kóde pred jeho použitím. Ako hodnotu môžete priradiť 0, pretože funkcia sa postará o priradenie správnej hodnoty neskôr. Pridajte teda pod výrazy importu:

    # globálna premenná "deklarujúca" klávesnica = 0 scrMang = 0

  • Upravte svoju funkciu startGame:

    • Povedzme, že používate klávesnicu s globálnymi premennými a scrMang. Vykonajte to napísaním globálnej klávesnice, scrMang v hornej časti funkcie.
    • Nechajte okno počúvať udalosti klávesnice.
    • Povedzte obrázku, aby konal na základe PlatformerController. PlatformerController čoskoro implementujete.
    • Vytvorte mapový urýchľovač, ktorý zvládne kolízie medzi plnými dlaždicami a figúrkou.

    def startGame (): globálna klávesnica, scrMang generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (obr) # tileLayer = načítať ('levelMap.xml ') solidTiles = tileLayer [' solid '] nsoliTiles = tileLayer [' not_solid '] # keyboard = key. KeyStateHandler () director.window.push_handlers (keyboard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (velocity_on_bump = 'slide') fig.collision_handler = make_collision_handler (mapcollider, solidTiles) # scrMang = ScrollingManager () scrMang.add (nsoliTiles, z = -1) scrMang.add (solidTiles, z = 0) scrMang.add (figLayer, z = 1) # gameSc = scéna (scrMang) director.run (gameSc)

  • Vytvorte ovládač plošinovky. Práve to posunie figúrku podľa vašich stlačení klávesov.

    • Definujte ovládač plošinovky ako podtriedu akcie.
    • Definujte rýchlosť pohybu, rýchlosť skoku a gravitáciu.
    • Definujte funkciu spustenia. Táto funkcia sa volá raz, keď je ovládač plošinovky pripojený k obrázku. Mala by nastaviť svoju rýchlosť na 0 v smere x aj v smere y.
    • Definujte funkciu kroku. Bude sa to opakovať, kým bude scéna bežať.
    • Povedzte funkcii step, aby používala klávesnicu globálnych premenných a scrMang.
    • Získajte a zmeňte rýchlosť. Uložte rýchlosť x a y do samostatných premenných. Nastavte rýchlosť x na 1 alebo -1 (v závislosti od toho, či bolo stlačené ľavé alebo pravé tlačidlo) vynásobené rýchlosťou pohybu. Pridajte k rýchlosti y gravitáciu. Vynásobte to prestojmi, aby to fungovalo rovnako na pomalších zariadeniach. Ak stlačíte medzerník a postava stojí na zemi, skočte zmenou rýchlosti y na rýchlosť skoku.
    • Vypočítajte, kam sa má figúrka posunúť. Potom nechajte obsluhu kolízie upraviť túto polohu, ak je vo vnútri pevnej dlaždice. Nakoniec figúrku presuňte do novej upravenej polohy.
    • Nastavte zameranie správcu posúvania na obrázok. To spôsobuje, že sa fotoaparát pohybuje rozumným spôsobom, keď sa postava pohybuje.

    class PlatformerController (Action): global keyboard, scrMang on_ground = True MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) def step (self, dt): global keyboard, scroller ak dt> 0,1: # nerobte nič počas prestojov na veľkú návratnosť vx, vy = self.target.velocity vx = (keyboard [key. RIGHT] - keyboard [key. LEFT]) * self. MOVE_SPEED vy + = self. GRAVITY * dt if self.on_ground a klávesnica [key. SPACE]: vy = self. JUMP_SPEED dx = vx * dt dy = vy * dt last = self.target.get_rect () new = last.copy () new.x += dx new.y += dy self.target.velocity = self.target.collision_handler (last, new, vx, vy) self.on_ground = (new.y == last.y) self.target.position = new.center scrMang.set_focus (*new.center)

5692759 28
5692759 28

Krok 14. Otestujte svoj kód

Ak ste nasledovali príklad, tučniaka by ste teraz mali presúvať pomocou klávesov so šípkami a skákať stlačením medzerníka. Tučniak by teraz mal namiesto vznášania sa nad zemou spadnúť.

5692759 29
5692759 29

Krok 15. Vytvorte koniec hry

Aj hry, ktoré môžu pokračovať donekonečna, by mali mať možnosť prehry. Pretože úroveň, ktorú ste v príklade urobili pomocou funkcie, má koniec, budete tiež musieť umožniť výhru tým, že prídete na tento koniec. V opačnom prípade by tam hráč iba skákal po ľadových blokoch, čo by ho nudilo.

  • Vnútri plošinového ovládača po zaostrení nastavte polohu x a y figúrky. Ak je pozícia y menšia ako 0, zavolajte funkciu finishGame () (napíšete to neskôr) a argumentom bude „Koniec hry“. Ak je pozícia x väčšia ako veľkosť obrazovky vynásobenej číslom 3 (predtým ste ju nastavili ako veľkosť úrovne).

    posX, posY = self.target.position if posY <0: finishGame ("Game Over") návrat ak posX> 800*3: # úroveň veľkosť finishGame ("úroveň dokončená") návrat

  • Definujte ponuku triedy. Mala by byť rovnaká ako trieda hlavnej ponuky, ktorú ste definovali predtým, ale namiesto prázdneho reťazca ako názvu by mala používať variabilný text, ktorý funkcia _init_ berie ako argument. Položky ponuky by mali mať označenie „Skúste to znova“a „Ukončiť“, ale funkcie, ktoré volajú, zostanú rovnaké.

    class FinishMenu (Menu): def _init _ (self, text): super (FinishMenu, self)._ init _ (text) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem („Try again“, startGame)), (Položka ponuky („Ukončiť“, pyglet.app.exit))] self.create_menu (položky ponuky)

  • Definujte funkciu finishGame (). Text by mal brať ako argument. Malo by to urobiť scénu z pozadia hlavnej ponuky, ponuku FinishMenu s textovým argumentom, ktorý sa odovzdáva do tejto ponuky. Potom by mala spustiť túto scénu.

    def finishGame (text): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (text)) director.run (menuSc)

5692759 30
5692759 30

Krok 16. Pridajte kredity

Tu získate kredit za svoj úžasný kód a kredit komukoľvek ďalšiemu, kto vám na tejto ceste pomohol. Ak ste použili obrázok z iného webu (s povolením), určite tento obrázok priraďte jeho tvorcovi.

  • Vytvorte súbor ÚVERY a zadajte sem všetky svoje kredity takto:

    Tučniak: Kelvin Shadewing, pod CC0 Ice block: Michał Banas digit1024 na opengameart.org pod CC-BY-SA 3.0

  • Vráťte sa do kódu Pythonu a importujte štítok z cocos.text.
  • Definujte podtriedu Kredity vrstvy. Vo funkcii _init_ si prečítajte súbor CREDITS a z každého riadka v ňom vytvorte textový štítok na správnom mieste.

    triedy Kredity (Layer): def _init _ (self): super (Credits, self)._ init _ () credFile = open ("CREDITS", "r") creds = credFile.read () creds = creds.split ("\ n ") pre i v rozsahu (0, len (creds)): credLabel = Label (creds , font_size = 32, anchor_x =" left ", anchor_y =" top ") credLabel.position = 25, 500- (i +1)*40 self.add (credLabel)

  • Prejdite do triedy hlavnej ponuky a pridajte položku ponuky s názvom „Kredity“, ktorá po kliknutí vyvolá funkciu showCredits.
  • Definujte podtriedu Tlačidlo ponuky Späť na HlavnúMenu. Vytvorte z tejto ponuky jednu položku s názvom „Späť“, ktorá volá funkciu showMainMenu. Toto „menu“, ktoré je skôr ako tlačidlo, by malo byť zvisle zarovnané dole a horizontálne hore.

    trieda BackToMainMenuButton (Menu): def _init _ (self): super (BackToMainMenuButton, self)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMenu))] self. create_menu (položky ponuky)

  • Definujte funkciu showCredits. Malo by vytvoriť scénu z vrstvy MainMenuBgr a vrstvy Kredity a spustiť túto scénu.

    def showCredits (): credSc = Scene (MainMenuBgr ()) credSc.add (Credits ()) credSc.add (BackToMainMenuButton ()) director.run (credSc)

5692759 31
5692759 31

Krok 17. Skontrolujte svoj kód

Keď si myslíte, že ste kód dokončili, mali by ste si ho znova pozrieť. Pomôže vám to zistiť, či je možné niečo optimalizovať alebo či ste zabudli odstrániť nepotrebné riadky. Ak ste nasledovali príklad, celý váš kód by teraz mal vyzerať nasledovne:

    z cocos.director import * from cocos.menu import * from cocos.scene import * from cocos.layer import * from cocos.sprite import * from cocos.tiles import * from cocos.mapcolliders import * from cocos.actions import * from cocos.text import Štítok import pyglet.app z pyglet.window import kľúč z matematiky import strop z náhodného importu randint # "deklarovanie" globálnych premenných klávesnica = 0 scrMang = 0 trieda MainMenuBgr (ColorLayer): def _init _ (self): super (MainMenuBgr, self)._ init _ (0, 200, 255, 255) trieda MainMenu (Menu): def _init _ (self): super (MainMenu, self)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem („Spustiť hru“, startGame)), (MenuItem („Kredity“, showCredits)), (MenuItem („Ukončiť“, pyglet.app.exit))] Kredity (Layer) triedy self.create_menu (menuItems): def _init _ (self): super (Credits, self)._ init _ () credFile = open ("CREDITS", "r") creds = credFile.read () creds = creds.split ("\ n") pre i v rozsahu (0, len (creds)): credLabel = Label (creds , font_size = 32, anchor_x = "vľavo", anchor_y = "hore") credLabel.position = 25, 500- (i+1)*40 trieda self.add (credLabel) BackToMainMenuButton (Menu): def _init _ (self): super (BackToMainMenuButton, self)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMenu))] self.create_menu (menuItems) class FinishMenu (Menu): def _init _ self, text): super (FinishMenu, self)._ init _ (text) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem („Skúste to znova“, startGame))), (MenuItem („Quit“, pyglet. app.exit))] self.create_menu (menuItems) class PlatformerController (Action): global keyboard, scrMang on_ground = True MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) def step (self, dt): globálna klávesnica, scroller ak dt> 0,1: # nerobte nič, pokiaľ sú prestoje príliš veľké návratnosť vx, vy = self.target.velocity vx = (klávesnica [key. RIGHT] - klávesnica [key. LEFT]) * self. MOVE_SPEED vy += self. GRAVITY * dt if self.on _zemie a klávesnica [key. SPACE]: vy = self. JUMP_SPEED dx = vx * dt dy = vy * dt last = self.target.get_rect () new = last.copy () new.x += dx new.y + = dy self.target.velocity = self.target.collision_handler (last, new, vx, vy) self.on_ground = (new.y == last.y) self.target.position = new.center scrMang.set_focus (* new.center) posX, posY = self.target.position if posY <0: finishGame ("Game Over") return if posX> 800*3: # level size finishGame ("Level Completed") return def finishGame (text): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (text)) director.run (menuSc) def showCredits (): credSc = Scene (MainMenuBgr ()) credSc.add (Credits ()) credSc.add (BackToMainMenuButton ()) director.run (credSc) def generateTilemap (): colAmount = ceil (800/16) * 3 # (šírka obrazovky / veľkosť dlaždice) * 3 rowAmount = ceil (600/16) # výška obrazovky / veľkosť dlaždice tileFile = open ("levelMap.xml", "w") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) pre i v rozsahu (0, colAmount): tileFile.write ('') makeHole = False if rand int (0, 50) == 10 a i! = 0: # neumožňujú otvory v mieste spawn makeHole = True pre j v rozsahu (0, rowAmount): if makeHole: tileFile.write ('\ n') else: if j <= iceHeight: tileFile.write ('\ n') else: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) if iceHeight <0: # limit tiles from goes too low iceHeight = randint (1, 5) if iceHeight> rowAmount: # limit tiles from being too high iceHeight = randint (int (rowAmount/2) -5, int (rowAmount/2) +5) tileFile.write ('\ n ') tileFile.write (' / n / n ') pre i v rozsahu (0, colAmount): tileFile.write (' ') pre j v rozsahu (0, rowAmount): tileFile.write (' / n ') tileFile.write ('\ n') tileFile.write ('\ n / n') tileFile.close () def startGame (): globálna klávesnica, scrMang generateTilemap () # fig = Sprite ('pingu.png') obr. = (8, 250) figLayer = ScrollableLayer () figLayer.add (obr) # tileLayer = load ('levelMap.xml') solidTiles = tileLayer ['solid'] nsoliTiles = tileLayer ['not_solid'] # keyboard = key. KeyStateHandler () director.window.push_handlers (keybo ard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (velocity_on_bump = 'slide') fig.collision_handler = make_collision_handler (mapcollider, solidTiles) # scrMang = ScrollingManager () scrMang.add (nsoliTang, z = -1. add (solidTiles, z = 0) scrMang.add (figLayer, z = 1) # gameSc = Scene (scrMang) director.run (gameSc) def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) director.run (menuSc) window = director.init (caption = "IcyPlat - a simple platformer", resizable = True) showMainMenu ()

  • To je celkom 168 riadkov a 152 riadkov, ak počítate iba kód. Zdá sa to veľa, ale pre takú komplexnú hru je to skutočne malé množstvo.
5692759 32
5692759 32

Krok 18. Hotovo

Teraz vyskúšajte hru. Keď niečo programujete, musíte skontrolovať, či to funguje, vždy, keď ste implementovali niečo nové. Tiež by ste si mohli nejaký čas zahrať hru, ktorú ste napísali.

Časť 3 z 3: Publikovanie hry

5692759 52
5692759 52

Krok 1. Napíšte závislosti

Každý, kto používa iný počítač, nebude mať nainštalovaný rovnaký softvér a knižnice ako vy. Budete sa teda musieť uistiť, že každý, kto si nainštaluje vašu hru, presne vedel, čo potrebuje na jej spustenie. Nemusíte si zapisovať všetky závislosti všetkých závislostí od všetkých závislostí a podobne, ale mali by ste aspoň napísať závislosti svojich balíkov a ich závislosti.

5692759 53
5692759 53

Krok 2. Uistite sa, že máte povolenie používať všetky médiá

To platí pre všetku grafiku vrátane 3D modelov, hudby, dialógov, hudby, knižníc a rámcov, ktoré ste použili vo svojej hre. Čokoľvek, čo si sám nenapísal.

  • Často existujú určité podmienky, ako napríklad pripísanie kreditu autorovi alebo zdieľanie úprav média pod rovnakou licenciou. Niekedy budete môcť používať grafiku bez pripisovania autorov, pokiaľ za hru nebudete účtovať poplatky. Ak musíte autorovi poďakovať, urobte to na dobre viditeľnom mieste, napríklad na karte „Kredity“vo vašej hre.
  • Existujú aj médiá s nárokovanými autorskými právami a bez uvedenia licencie, niekedy s textom ako „Všetky práva vyhradené“. Ak je to tak, pred zaradením do hry musíte získať výslovné povolenie od autora.
  • Knižnice sú spravidla vydávané na základe licencií, ktoré im umožňujú používať ich ako knižnice. Významnou výnimkou je GPL bez výnimky z prepojenia: Takáto licencia ju umožňuje používať iba v programe s určitými licenciami. A vždy by ste si mali prečítať aspoň základné body licencie, aby ste sa presvedčili, že čokoľvek, čo robíte s médiom alebo knižnicou, je povolené.

Pozor: Použitie médií alebo knižníc spôsobom, ktorý licencia nepovoľuje v hre, ktorú publikujete, vás môže dostať do vážnych právnych problémov. Ak si nie ste istí, či je vaše používanie povolené, opýtajte sa autora alebo sa úplne vyhnite médiu.

5692759 54
5692759 54

Krok 3. Rozhodnite sa, za akých podmienok chcete hru publikovať

Budete predávať svoju hru? Chcete umožniť ostatným používať vaše obrázky a nápady? Aj keď si musíte dávať pozor na médiá, ktoré používate vo svojom projekte, zvyčajne sa môžete rozhodnúť, ako chcete umožniť ostatným používať vašu hru. Na vydanie hry vo verejnom vlastníctve môžete použiť licenciu Creative Commons CC0. Ak chcete za určitých podmienok povoliť distribúciu a úpravy a zároveň si zachovať niektoré práva, vyskúšajte licenciu Gnu General Public License (GPL) alebo Berkeley Software Distribution (BSD). Alebo môžete svoj softvér zmeniť na vlastnícky, čo znamená, že nikto ho nesmie distribuovať alebo upravovať bez vášho súhlasu.

Aj keď je možné predajom hier zarobiť peniaze, je nepravdepodobné, že by si ľudia kúpili vašu prvú hru, ktorá má zvyčajne málo funkcií a nič zvláštne. Tiež, ak bezplatný program nefunguje, ľudia, ktorí si ho stiahli, budú len sklamaní. Ak to však zaplatia, budú požadovať vrátenie peňazí, čo spôsobí ďalšie problémy vám aj používateľom. Zvážte preto sprístupnenie prvých niekoľkých programov zadarmo

5692759 55
5692759 55

Krok 4. Rozhodnite sa, ako chcete svoju hru publikovať

Každá metóda má svoje výhody a nevýhody, takže sa musíte rozhodnúť sami.

  • Publikovanie na webovej stránke:

    Ak máte webovú stránku, môžete svoju hru nahrať a sprístupniť na stiahnutie. Nezabudnite poskytnúť jasné pokyny o inštalácii softvéru a všetkých požadovaných závislostiach. Nevýhodou je, že hráči budú musieť nainštalovať závislosti ručne, čo môže byť pre niektorých ľudí náročné.

  • Vytvorenie balíka pre správcu balíkov:

    Existujú rôzni správcovia balíkov, ako sú apt, Yum a Homebrew, ktorí ľuďom uľahčujú inštaláciu aplikácií v prostrediach Linux a Linux. Všetky majú rôzne formáty balíkov. Dobrá vec na balíkoch je, že automaticky inštalujú všetky závislosti (ak ich nakonfigurujete správne). Hráč si teda musí nainštalovať iba váš balík a potom môže hrať hru. Problém je v tom, že na rôznych platformách existuje mnoho rôznych správcov balíkov, takže si budete musieť dať prácu s poskytovaním balíkov pre všetky najbežnejšie.

5692759 56
5692759 56

Krok 5. Venujte pozornosť svojmu programu

Uvažujte o nahraní svojho programu do hlavného úložiska balíkov, ako sú tie, ktoré udržujú Ubuntu a Debian, aby bolo možné jednoduché inštalácie. Tiež uverejňujte príspevky na príslušných fórach, napríklad v sekcii projektov v GameDev alebo v časti tigSource. Ale nebuďte sklamaní, ak sa vaše prvé hry nestanú slávnymi. Ak máte predstavu, že sa to páči mnohým ľuďom, vaša hra sa môže stať známou.

Tipy

  • Buďte trpezliví a ochotní sa učiť. Programovanie môže byť niekedy frustrujúce!
  • Ak vás zaujíma, ako sa niečo robí v inej hre, a hra má otvorený zdrojový kód, môžete sa pozrieť na jeho zdrojový kód.
  • Keď hľadáte médiá, skúste nájsť obsah, ktorý je verejne dostupný. Vyhľadajte obrázky a hudbu „Creative Commons“alebo „Public Domain“a používajte webové stránky ako https://opengameart.org alebo
  • Nekopírujte veľké časti kódu bez kontroly licencie. Je to často zakázané, a ak nie, zvyčajne to vyžaduje uvedenie zdroja.
  • Pri propagácii svojej hry nevytvárajte spam ani nezverejňujte príspevky na nevhodných miestach. Pravdepodobne vás to zablokuje na stránke, je to jednoducho nepríjemné a poškodí to vašu povesť.

Odporúča: