Jinsi ya Kupanga Michezo ya Kompyuta (na Picha)

Orodha ya maudhui:

Jinsi ya Kupanga Michezo ya Kompyuta (na Picha)
Jinsi ya Kupanga Michezo ya Kompyuta (na Picha)
Anonim

Je! Una wazo la mchezo wa kompyuta na unataka kuifanya iwe ya kweli? Au umewahi kujiuliza jinsi michezo ya kompyuta imeandikwa? WikiHow hukufundisha jinsi ya kuandika michezo mitatu ya msingi ya kompyuta kwenye Python. Utahitaji uelewa wa kimsingi wa chatu na dhana za jumla za programu ili kukuza mchezo wako wa kwanza.

Hatua

Sehemu ya 1 ya 3: Kutengeneza Mchezo Unaotegemea Nakala

5692759 1
5692759 1

Hatua ya 1. Chagua lugha ya programu

Lugha zote za programu ni tofauti, kwa hivyo itabidi uamue ni ipi utumie kuandika mchezo wako. Kila lugha kuu ya programu inasaidia uingizaji wa maandishi, pato la maandishi na ujenzi-ikiwa (mambo makuu unayohitaji kwa mchezo rahisi wa msingi wa maandishi), kwa hivyo chunguza chaguzi na uamue ni nini unahisi raha zaidi na umejitolea kujifunza. Hapa kuna mambo kadhaa ya kuzingatia:

  • Je! Lugha hutumika zaidi kwa nini?

    Lugha zingine za programu, kama JavaScript, zimeundwa kutumiwa kwa wavuti, wakati zingine, kama Python, C, au C ++, zimeundwa kuendesha programu za kompyuta. Kwa mchezo wako, lengo la lugha yenye matumizi anuwai, kama vile Python, C, C ++, au JavaScript.

  • Je! Ni ngumu sana kujifunza?

    Ingawa kuandika programu inapaswa kuwa rahisi kutosha baada ya mazoezi katika lugha yoyote ya kawaida ya programu (kwa mfano, sio moja iliyoundwa kutatanisha kama Malbolge), wengine ni rafiki kwa Kompyuta kuliko wengine. Java na C, kwa mfano, itahitaji uelewe dhana za kina za programu kuliko kitu kama Python, ambayo inajulikana kwa syntax inayoweza kupatikana na ya moja kwa moja.

  • Ninaweza kuitumia wapi?

    Labda unataka watu kwenye mifumo tofauti, kama Linux, Mac au Windows, ili wote waweze kucheza mchezo wako. Kwa hivyo haupaswi kutumia lugha inayoungwa mkono tu kwenye mifumo michache, kama Visual Basic, ambayo inasaidia tu kwenye Windows.

Nakala hii itatumia Python kwa mifano ya mchezo wa maandishi, lakini unaweza kuangalia jinsi dhana hizo zinafanywa katika lugha nyingine yoyote ya programu.

5692759 2
5692759 2

Hatua ya 2. Pata kompyuta yako tayari

Vipengele viwili vikuu utahitaji mhariri wa maandishi, ambayo utaandika nambari yako, na mkusanyaji, ambayo utatumia kuibadilisha kuwa mchezo. Ikiwa unataka kufuata mfano katika nakala hii, unapaswa kufunga Python na ujifunze jinsi ya kuendesha programu. Ikiwa unataka, unaweza kusanidi IDE (Mazingira ya Eneo-kazi lililounganishwa), ambayo inachanganya uhariri, kukusanya, na utatuzi wa mpango mmoja. IDE ya chatu inaitwa IDLE. Lakini unaweza kutumia tu kihariri chochote cha maandishi kinachounga mkono maandishi wazi, kama vile Notepad ya Windows, TextEdit ya MacOS, au Vim ya Linux.

5692759 3
5692759 3

Hatua ya 3. Andika nambari fulani ya kusalimia kichezaji

Mchezaji atataka kujua kinachoendelea na nini wanapaswa kufanya, kwa hivyo unapaswa kuchapisha maandishi kwa ajili yao.

  • Hii imefanywa na kazi ya print () katika Python. Ili kuijaribu, fungua faili mpya na ugani wa.py, ingiza nambari ifuatayo ndani yake, ihifadhi na uiendeshe:

    chapisha ("Karibu kwenye mchezo wa kukadiria nambari!") Chapisha ("Ingiza nambari nzima kati ya 1 na 1000:")

5692759 4
5692759 4

Hatua ya 4. Zalisha nambari ya nasibu

Wacha tufanye mchezo unaotegemea maandishi ambao unamwuliza mchezaji nadhani nambari sahihi. Jambo la kwanza tutalohitaji kufanya ni kutengeneza nambari bila mpangilio mwanzoni mwa mchezo ili mchezaji asifikirie nambari hiyo hiyo kila wakati. Kwa kuwa nambari itabaki ile ile wakati wote wa programu, utahitaji kuhifadhi nambari isiyo ya kawaida kwa kutofautisha.

  • Python haina kazi ya nambari iliyojengwa kwa bahati nasibu, lakini ina maktaba ya kawaida (hii inamaanisha mtumiaji hatalazimika kusanikisha chochote cha ziada) ambacho hufanya. Kwa hivyo nenda mwanzoni mwa nambari yako (kabla ya kazi za kuchapisha ()) na andika uingizaji wa laini bila mpangilio.
  • Tumia kazi ya nasibu. Inaitwa randint (), iko kwenye maktaba ya nasibu ambayo umeingiza tu, na inachukua kiwango kidogo na cha juu kabisa ambacho nambari inaweza kuwa na hoja. Kwa hivyo rudi mwisho wa nambari yako na weka laini ifuatayo:

    hakiNum = bila mpangilio. 0, 1000)

5692759 5
5692759 5

Hatua ya 5. Pata pembejeo kutoka kwa kichezaji

Katika mchezo, mchezaji anataka kufanya kitu au kuingiliana na kitu. Katika mchezo wa maandishi, hii inawezekana kwa kuingiza maandishi. Sasa kwa kuwa tuna nambari isiyo na mpangilio, mistari yetu inayofuata ya nambari inapaswa kumwuliza mchezaji aingize nadhani yao bora.

  • Kwa kuwa nambari uliyoingiza inachapisha maagizo ya kuingiza nambari kwa kichezaji, inapaswa pia kusoma nambari wanayoingiza. Hii imefanywa na pembejeo () katika Python 3, na raw_input () katika Python 2. Unapaswa kuandika katika Python 3, kwani Python 2 itapitwa na wakati hivi karibuni. Ongeza mstari ufuatao kwa nambari yako ya kuhifadhi uingizaji wa mchezaji kwa nambari inayoitwa tofauti:

    userNum = pembejeo ()

5692759 6
5692759 6

Hatua ya 6. Badili pembejeo ya kichezaji kuwa aina ya data inayoweza kutumika

Mchezaji ameingiza namba-sasa nini?

  • Fanya uingizaji wa mchezaji kuwa nambari. Sasa, hii inaweza kusikika kuwa ya kutatanisha kwa sababu wameingiza nambari tu. Lakini kuna sababu nzuri: Python inadhania kuwa pembejeo zote ni maandishi, au "kamba," kama inavyoitwa katika programu. Nakala hii ina nambari unayotaka kupata. Python ina kazi ambayo inabadilisha kamba ambayo ina nambari tu kwa nambari iliyo ndani. Aina:

    userNum = int (userNum)

5692759 7
5692759 7

Hatua ya 7. Linganisha nambari ya mchezaji na nambari sahihi

Mara tu mchezaji atakapoingiza nambari yao, utahitaji kulinganisha na ile ambayo ilitengenezwa kwa nasibu. Ikiwa nambari hazifanani, mchezo wako unaweza kumfanya mchezaji ajaribu nambari nyingine. Ikiwa nambari zinalingana, unaweza kumwambia mchezaji walidhani kwa usahihi, na uacha programu. Hii imefanywa na nambari ifuatayo:

wakati userNum! = hakiNum: userNum = int (pembejeo ())

5692759 8
5692759 8

Hatua ya 8. Toa maoni ya mchezaji

Wakati tayari umeshughulikia michango yao, mchezaji hataona hii. Utahitaji kuchapisha matokeo kwa mchezaji ili waelewe kinachotokea.

  • Hakika, unaweza kumwambia tu mchezaji ikiwa nambari yao ni sawa au sio sawa. Lakini kwa njia hiyo, mchezaji anaweza kulazimika nadhani mara 1000 katika hali mbaya, ambayo itakuwa ya kuchosha sana.
  • Kwa hivyo mwambie mchezaji ikiwa idadi yao ni ndogo sana au kubwa sana. Hii itapunguza idadi yao ya nadhani kwa kiasi kikubwa. Ikiwa, kwa mfano, mchezaji anadhani 500 kwanza, na mchezo unajibu "Kubwa sana. Jaribu tena," kutakuwa na nambari 500 tu badala ya 1000. Hii imefanywa na ujenzi wa-ikiwa, kwa hivyo badilisha uchapishaji ("Wrong. Jaribu tena. ") Na moja.
  • Kuwa na ufahamu kwamba kuangalia ikiwa nambari mbili ni sawa hufanywa na ==, sio na =. = inapeana haki yake kwa kutofautisha kushoto kwake!
  • ikiwa userNum <rightNum: chapa ("Kidogo sana. Jaribu tena:") ikiwa userNum> rightNum: chapisha ("Kubwa sana. Jaribu tena:")

5692759 9
5692759 9

Hatua ya 9. Jaribu nambari yako

Kama programu, unapaswa kuhakikisha kuwa nambari yako inafanya kazi kabla ya kuzingatia kuwa imekamilika.

  • Unapopanga katika chatu, hakikisha unapata indentations sahihi. Nambari yako inapaswa kuonekana kama hii:

    ingiza kuchapisha kwa nasibu ("Karibu kwenye mchezo wa kukadiria nambari!") Chapisha ("Ingiza nambari nzima kati ya 1 na 1000:") rightNum = random.randint (0, 1000) userNum = input () userNum = int (userNum) wakati userNum! = rightNum: ikiwa userNum <rightNum: chapa ("Kidogo sana. Jaribu tena:") ikiwa userNum> rightNum: chapa ("Kubwa sana. Jaribu tena:") userNum = int (input ()) chapa ("Umekadiria kwa usahihi. ")

5692759 10
5692759 10

Hatua ya 10. Thibitisha ingizo

Mchezaji haipaswi kuvunja mchezo wako kwa kuingiza tu kitu kibaya. "Kuthibitisha ingizo" inamaanisha kuhakikisha kuwa mchezaji ameingiza kitu sahihi kabla ya kuchakata.

  • Fungua mchezo tena na ujaribu kuingiza chochote ambacho sio nambari. Mchezo utatoka na Thamani ya Thamani. Ili kuepuka hili, unaweza kutekeleza njia ya kuangalia ikiwa pembejeo ilikuwa nambari.
  • Fafanua kazi. Kwa kuwa kudhibitisha uingizaji ni mrefu sana, na lazima uifanye mara nyingi, unapaswa kufafanua kazi. Haitachukua hoja yoyote na kurudisha nambari. Kwanza, andika def numInput (): juu ya nambari yako, moja kwa moja chini ya uingizaji wa nasibu.
  • Pata mchango wa mchezaji mara moja. Tumia kazi ya kuingiza () na upe matokeo kwa inp inayobadilika.
  • Wakati mchango wa mchezaji sio nambari, waulize waingize nambari. Kuangalia ikiwa kamba ni nambari, tumia kazi za isdigit (), ambayo inaruhusu tu nambari nzima, kwa hivyo hautalazimika kuangalia hiyo kando.
  • Ikiwa pembejeo ni nambari, ibadilishe kutoka kamba hadi nambari na urudishe matokeo. Tumia kazi ya int () kubadilisha kamba kuwa nambari kamili. Hii itafanya ubadilishaji katika nambari kuu kuwa ya lazima, na unapaswa kuiondoa hapo.
  • Badilisha simu zote kwa pembejeo () kwenye nambari kuu na simu kwenda numInput ().
  • Nambari ya kazi ya numInput () itaonekana kama hii:
  • def numInput (): inp = input () wakati sio inp.isdigit (): chapa ("Uliambiwa uingize nambari nzima! Ingiza nambari nzima:") inp = input () Return int (inp)

5692759 11
5692759 11

Hatua ya 11. Jaribu mchezo tena

Ingiza vitu vibaya kwa makusudi ili uone kinachotokea, na kisha rekebisha makosa yoyote yanapokuja.

Jaribu kuingiza maandishi wakati programu inakuuliza nambari. Sasa, badala ya kutoka na ujumbe wa kosa, programu itakuuliza nambari tena

5692759 12
5692759 12

Hatua ya 12. Pendekeza kuanza tena mchezo ukimaliza

Kwa njia hii, mchezaji anaweza kucheza mchezo wako kwa muda mrefu bila kulazimika kuanza tena.

  • Weka nambari zote isipokuwa uingizaji na ufafanuzi wa kazi katika kitanzi cha wakati. Weka Kweli kama hali: hii itakuwa kweli kila wakati, kwa hivyo kitanzi kitaendelea milele.
  • Muulize mchezaji ikiwa wanataka kucheza tena baada ya kubahatisha nambari kwa usahihi. Tumia kazi ya kuchapisha ().
  • Ikiwa watajibu "Hapana", angalia nje. Ikiwa watajibu kitu kingine chochote, endelea. Kuvunja kitanzi hufanywa na taarifa ya mapumziko.
  • Sogeza "Karibu kwenye mchezo wa kukadiria nambari" nje ya kitanzi cha wakati. Mchezaji labda hataki kukaribishwa kila wanapocheza mchezo. Sogeza uchapishaji wa maagizo ("Karibu kwenye mchezo wa kukadiria nambari!" Hapo juu wakati wa Kweli:, kwa hivyo itachapishwa mara moja tu, wakati mtumiaji anaanza mchezo wa kwanza.
5692759 13
5692759 13

Hatua ya 13. Jaribu mchezo

Utahitaji kujaribu mchezo wako kila wakati unapotumia huduma mpya.

  • Hakikisha kujibu "Ndio" na "Hapana" zote mbili angalau mara moja ili kuhakikisha kuwa chaguzi zote zinafanya kazi. Hapa ndivyo nambari yako inapaswa kuonekana kama:

    ingiza nambari isiyo ya kawaida ya kuingiza (): ("Karibu kwenye mchezo wa kukadiria nambari!") Wakati wa Kweli: chapa ("Ingiza nambari nzima kati ya 1 na 1000:") rightNum = random.randint (0, 1000) userNum = numInput () wakati userNum! userNum <rightNum: chapa ("Kidogo sana. Jaribu tena:") ikiwa userNum> rightNum: chapisha ("Kubwa sana. Jaribu tena:") userNum = numInput () chapa ("Ulidhani kwa usahihi.") chapisha ("Je! unataka kucheza tena? Ingiza Hapana ili uache. ") ikiwa pembejeo () ==" Hapana ": pumzika

5692759 14
5692759 14

Hatua ya 14. Andika michezo mingine inayotegemea maandishi

Je! Vipi juu ya kuandika safari ya maandishi ijayo? Au mchezo wa jaribio? Kuwa mbunifu.

Kidokezo: Wakati mwingine inasaidia kutazama nyaraka ikiwa huna uhakika jinsi kitu kinafanywa au jinsi kazi inatumiwa. Hati ya Python 3 inapatikana kwenye https://docs.python.org/3/. Wakati mwingine kutafuta chochote unachotaka kufanya kwenye mtandao pia kunarudisha matokeo mazuri.

Sehemu ya 2 ya 3: Kutengeneza Mchezo na Picha za 2D

5692759 15
5692759 15

Hatua ya 1. Chagua maktaba ya picha

Kutengeneza picha ni ngumu sana, na lugha nyingi za programu (pamoja na Python, C ++, C, JavaScript) hutoa msaada mdogo tu au hata hakuna msaada wa picha kwenye msingi au maktaba ya kawaida. Kwa hivyo itabidi utumie maktaba ya nje kuweza kutengeneza picha, kwa mfano Pygame ya Python.

Hata na maktaba ya picha, itabidi uwe na wasiwasi juu ya vitu kama jinsi ya kuonyesha menyu, jinsi ya kuangalia kile mchezaji alibonyeza, jinsi ya kuonyesha tiles, na kadhalika. Ikiwa ungependa kuzingatia kukuza mchezo halisi, unaweza kutumia maktaba ya injini ya mchezo kama Unity, ambayo hutumia vitu hivi kwa urahisi

Nakala hii itatumia Python na Cocos2D kuonyesha jinsi ya kutengeneza jukwaa rahisi la 2D. Baadhi ya dhana zilizotajwa zinaweza kuwa hazipo katika injini zingine za mchezo. Rejea nyaraka zao kwa habari zaidi.

5692759 16
5692759 16

Hatua ya 2. Sakinisha maktaba ya michoro uliyochagua

Cocos2D ya Python ni rahisi kusanikisha. Unaweza kuipata kutoka https://python.cocos2d.org/index.html, au kwa kutumia sudo pip3 kufunga cocos2d ikiwa unatumia Linux.

5692759 17
5692759 17

Hatua ya 3. Tengeneza saraka mpya ya mchezo wako na media

Utatumia vitu kama picha na sauti kwenye mchezo wako. Weka vitu hivi kwenye saraka sawa na programu. Saraka hii haipaswi kuwa na kitu kingine chochote ili uweze kuona kwa urahisi mali unazo kwenye mchezo.

5692759 18
5692759 18

Hatua ya 4. Unda faili mpya ya nambari katika saraka mpya

Piga simu kuu, na kiendelezi cha faili kwa lugha yako ya programu. Ukiandika programu kubwa na ngumu ambapo inafanya busara kuwa na faili nyingi za programu, hii itakuonyesha ambayo faili kuu.

Katika mfano huu, tutaunda faili inayoitwa main.py ambayo itakuwa na nambari zetu zote

5692759 19
5692759 19

Hatua ya 5. Unda dirisha la mchezo

Hii ndio sharti ya msingi kwa mchezo na picha.

  • Ingiza moduli ndogo ndogo za cocos2d: cocos.director, cocos.scene na cocos.layer. Hii imefanywa na kutoka kwa subModuleName kuagiza *, ambapo jina la Moduli ndogo ni submodule ambayo unataka kuagiza. Tofauti kati ya… kuagiza * na kuagiza… ni kwamba sio lazima uweke jina la moduli mbele ya kila kitu unachotumia kutoka kwa moduli hiyo na ile ya zamani.
  • Fafanua dhana ndogo MainMenuBgr ya ColourLayer. Hii inamaanisha kwamba msingi wowote wa menyu kuu utakayounda utaishi kama safu ya rangi na mabadiliko kadhaa unayofanya.
  • Anza mkurugenzi wa cocos. Hii itakupa dirisha jipya. Usipoweka maelezo mafupi, dirisha litakuwa na maelezo mafupi sawa na jina la faili (main.py), ambayo haitaonekana mtaalamu. Ruhusu dirisha ibadilishwe ukubwa na kuweka mipangilio inayoweza kubadilishwa kuwa Kweli.
  • Fafanua onyesho la kaziMenuMenu. Unapaswa kuweka nambari ya kuonyesha menyu kuu katika kazi kwa sababu hii itakuruhusu kurudi kwa urahisi kwenye menyu kuu kwa kupiga kazi hiyo tena.
  • Unda eneo. Eneo lina safu moja kwa sasa, ambayo ni kitu cha darasa la MainMenuBgr ulilofafanua.
  • Endesha eneo hili kwenye dirisha.
  • kutoka kwa cocos.director kuagiza * kutoka cocos.scene kuagiza * kutoka cocos.layer import * class MainMenuBgr (ColourLayer): def _init _ (self): super (MainMenu, self)._ init _ (0, 200, 255, 255) def showMainMenu (menyu: Sc = Onyesho (MainMenuBgr ()) director.run (menuSc) director.init (caption = "IcyPlat - platformer rahisi", resizable = True) showMainMenu ()

5692759 20
5692759 20

Hatua ya 6. Ongeza menyu kuu kwenye dirisha

Mbali na mchezo halisi, utahitaji kuongeza menyu ambayo mchezaji anaweza kutumia kufunga dirisha, kati ya vitu vingine unaweza kuongeza baadaye.

  • Ingiza cocos.menu (tena na maagizo) na pyglet.app (wakati huu na kuagiza).
  • Fafanua MainMenu kama kitengo cha Menyu.
  • Weka mpangilio wa menyu kuu. Lazima uweke mpangilio wa wima na usawa kando.
  • Unda orodha ya vitu vya menyu na uwaongeze kwenye menyu. Unapaswa kuwa na vitu vya menyu "Anza Mchezo" na "Acha" angalau. Kila kitu cha menyu kinapaswa kuwekwa ndani ya mabano. Kila kitu lazima kiwe na lebo na kazi ya kupigia simu ambayo huamua kinachotokea mchezaji anapobofya. Kwa kipengee cha "Anzisha Mchezo", tumia kazi ya kuanzaGame (utaiandika hivi karibuni), kwa kipengee cha "Acha", tumia "pyglet.app.exit" (tayari ipo). Unda menyu halisi kwa kupiga self.create_menu (menuItems).
  • Fafanua mwanzoGame (). Weka tu ufafanuzi kwa sasa, utachukua nafasi hiyo wakati unapoandika mchezo halisi.
  • Nenda mahali kwenye nambari yako ambapo uliunda eneo la menyuSc, na uongeze kitu cha MainMenu kwake.
  • Nambari yako yote sasa inapaswa kuangalia kama ifuatavyo:

    kutoka kwa cocos.director kuagiza * kutoka cocos.menu kuagiza * kutoka cocos.scene kuagiza * kutoka cocos.layer kuagiza * kuagiza pyglet.app darasa MainMenuBgr (ColourLayer): def _init _ (self): super (MainMenuBgr, self)._ init _ (0, 200, 255, 255) darasa MainMenu (Menyu): def _init _ (self): super (MainMenu, self)._ init _ ("" self.enu.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Start Game) ", startGame)), (MenuItem (" Acha ", pyglet.app.exit))] self.create_menu (menuItems) def startGame (): pass def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) director.run (menuSc) director.init (maelezo = "IcyPlat - jukwaa rahisi", resizable = True) showMainMenu ()

5692759 21
5692759 21

Hatua ya 7. Jaribu msimbo wako

Jaribu nambari mapema, wakati bado ni fupi na rahisi. Basi unaweza kutambua na kusahihisha makosa yoyote katika muundo wa kimsingi kabla ya mambo kuwa magumu sana.

Nambari kutoka kwa maagizo inapaswa kufungua maandishi ya dirisha "IcyPlat - jukwaa rahisi." Asili ni rangi ya samawati na unaweza kubadilisha ukubwa wa dirisha. Unapobofya "Anzisha Mchezo" kwenye menyu, hakuna kitu kinachopaswa kutokea (bado). Unapobofya "Acha," dirisha litafungwa

5692759 22
5692759 22

Hatua ya 8. Unda sprite

Sprite ni "kitu cha mchezo," au picha-2-dimensional. Sprites zinaweza kuwa vitu vya mchezo, ikoni, mapambo ya asili, wahusika, na kitu kingine chochote unachoweza kuwakilisha na picha kwenye mchezo. Tutaanza kwa kuunda sprite ya tabia ambayo mchezaji anaweza kuingiliana nayo.

  • Ingiza kijisanduku cha cocos.sprite na hotuba-kutoka-kuagiza.
  • Pata picha kuwakilisha sprite. Huwezi kuonyesha sprite ikiwa huna picha yake. Unaweza kuchora moja, au unaweza kupata moja kutoka kwa wavuti (angalia leseni, ingawa, ikiwa unapanga kuchapisha mchezo wako). Kwa mfano huu, nenda kwa https://opengameart.org/content/tux-classic-hero-style na uhifadhi picha ya-p.webp" />
  • Unda safu kama kitu kipya cha darasa la ScrollableLayer. Kisha, tengeneza sprite kama kitu cha Sprite na uweke msimamo wake kwa (8, 250). Kwa kumbukumbu, hatua (0, 0) iko kwenye kona ya chini kushoto. Hii ni ya juu kabisa, lakini itahakikisha kwamba ngwini hajakwama kwenye barafu.
  • Ongeza sprite kwenye safu ya sprite.
  • Unda eneo mpya kutoka kwa safu ya sprite na uiendeshe.
  • def startGame (): figLayer = ScrollableLayer () fig = Sprite ('pingu.png') fig.position = (75, 100) figLayer.add (fig) # gameSc = Scene (figLayer) director.run (gameSc)

  • Endesha nambari. Unapaswa kuona takwimu ndogo ya Penguin (au chochote ulichochora) kwenye rangi nyeusi baada ya kubofya Anza Mchezo.
5692759 23
5692759 23

Hatua ya 9. Ndoto juu ya mazingira yako

Katika michezo mingi, sprites zako hazipaswi kuelea tu kwenye batili. Wanapaswa kusimama juu ya uso fulani, na kitu karibu nao. Katika michezo ya 2D, hii mara nyingi hufanywa na seti ya tile na ramani ya tile. Tile iliyowekwa kimsingi inasema ni aina gani ya mraba wa uso na mraba wa nyuma upo, na zinaonekanaje.

  • Unda seti ya tile. Tile iliyowekwa kwa mchezo huu itakuwa ya msingi sana: tile moja kwa barafu na tile moja kwa anga. Tile ya barafu iliyotumiwa katika mfano huu ni kutoka hapa, chini ya CC-BY-SA 3.0.
  • Unda picha ya kuweka tile. Hiyo ni picha ya vigae vyote, ambavyo vyote vinapaswa kuwa na saizi sawa (zihariri ikiwa sio) na uwe na saizi unayotaka kuona kwenye mchezo, karibu na kila mmoja. Hifadhi picha yako kama IcyTiles.png.
  • Unda maelezo ya kuweka tile. Hiyo ni faili ya XML. Faili ya XML ina habari juu ya ukubwa wa vigae kwenye picha ya kuweka tile, picha gani ya kutumia, na wapi kupata tile ipi hapo. Unda faili ya XML iitwayo icyTiles.xml na nambari hapa chini:

         
    
5692759 24
5692759 24

Hatua ya 10. Tengeneza ramani ya tile kwa mandhari yako

Ramani ya tile ni ramani ambayo inafafanua ni tile ipi iko katika nafasi gani katika kiwango chako. Katika mfano, unapaswa kufafanua kazi ya kutengeneza ramani za tile kwa sababu kubuni ramani za mikono kwa mikono ni ngumu sana. Mchezo wa hali ya juu zaidi kawaida ungekuwa na mhariri wa kiwango fulani, lakini kwa kufahamiana na ukuzaji wa mchezo wa 2D, algorithm inaweza kutoa viwango vya kutosha.

  • Tafuta ni safu ngapi na safu zinahitajika. Kwa hili, gawanya saizi ya skrini na saizi ya tile kwa usawa (safu) na kwa wima (safu). Zungusha nambari kwenda juu; unahitaji kazi ya moduli ya hesabu kwa hiyo, kwa hivyo ongeza kutoka kwa dari ya kuingiza hesabu kwa uagizaji juu ya nambari yako.
  • Fungua faili kwa kuandika. Hii itafuta yaliyomo kwenye faili, kwa hivyo chagua jina ambalo hakuna faili kwenye saraka bado, kama levelMap.xml.
  • Andika vitambulisho vya kufungua kwenye faili.
  • Tengeneza ramani ya tile kulingana na algorithm. Unatumia ile iliyo kwenye nambari hapa chini, au unaweza kupata moja peke yako. Hakikisha kuagiza kazi ya randint kutoka kwa moduli bila mpangilio: inahitajika kwa nambari iliyo hapa chini kufanya kazi, na chochote utakachokuja nacho kitahitaji nambari kamili za nasibu. Pia, hakikisha kuweka tiles za angani na tiles za barafu katika tabaka tofauti: barafu ni ngumu, anga sio.
  • Andika vitambulisho vya kufunga kwenye faili na funga faili.
  • def hlahisaTilemap (): colAmount = dari (800/16) * 3 # (upana wa skrini / saizi ya tile) * safu 3 Kiasi = dari (600/16) # urefu wa skrini / saizi ya tile tileFile = wazi ("levelMap.xml", " w ") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) kwa i katika masafa (0, colAmount): tileFile.write ('') makeHole = Uongo ikiwa randint (0, 50 = = 10 na i! iceHeight: tileFile.write ('\ n') mwingine: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight + 5) ikiwa iceHeight <0: # punguza tiles kutoka kwenda chini sana barafuHeight = randint (1, 5) ikiwa barafuUrefu> safu Kiwango: # vigae vya kikomo kutoka barafu kubwa sana Urefu = randint (int (safuAmount / 2) -5, int (safuAmount / 2) +5) tileFile.write ('\ n') tileFile.write ('\ n / n') kwa i katika anuwai (0, colAmount): tileFile.write ('') kwa j katika masafa (0, safuAmount): tileFile.write ('\ n') tileFile.write ('\ n ') tileFile.write (' / n / n ') tileFile.close ()

5692759 25
5692759 25

Hatua ya 11. Onyesha ramani ya tile

Ingiza kila kitu kutoka kwa cocos.tiles na kisha uende kwenye kazi ya StartGame kwa hiyo.

  • Mwanzoni mwa kazi yako ya kuanzaGame, toa ramani ya tile kutumia kazi uliyoifafanua.
  • Unda msimamizi mpya wa kusogeza. Fanya hivi moja kwa moja chini ya mstari ambapo unaongeza sprite kwenye safu yake.
  • Unda safu mpya iliyo na vigae, ambavyo vitapakiwa kutoka kwa ramani ya tile ya levelMap.xml kazi yako ya kuzalishaTilemap iliyozalishwa.
  • Ongeza safu isiyo imara, safu imara na safu ya sprite kwa msimamizi wa kusogeza, haswa kwa mpangilio huu. Unaweza kuongeza z-msimamo ikiwa unataka.
  • Badala ya kuunda eneo kutoka kwa safu ya sprite, ibuni kutoka kwa msimamizi wa kutembeza.
  • Kazi yako ya kuanzaGame sasa inapaswa kuonekana kama hii:

    def startGame (): kuzalishaTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 500) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = mzigo ('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) # mchezoSc = Onyesho (scrMang) mkurugenzi. Kukimbia [mchezoSc]

5692759 26
5692759 26

Hatua ya 12. Jaribu nambari yako

Unapaswa kujaribu kificho chako mara nyingi ili kuhakikisha kuwa huduma mpya ulizotekeleza zinafanya kazi.

Nambari katika mfano inapaswa sasa kuonyesha mandhari ya barafu nyuma ya Penguin. Ikiwa Penguin anaonekana kama anazunguka mbali juu ya barafu, haukufanya chochote kibaya, na itarekebishwa katika hatua inayofuata

5692759 27
5692759 27

Hatua ya 13. Ongeza vidhibiti

Mchezaji ana njia nyingi zaidi za kuingiliana na programu katika mchezo wa 2D kuliko kwenye mchezo wa maandishi. Ya kawaida ni pamoja na kusonga takwimu zao wakati kitufe sahihi kinabanwa.

  • Ingiza kila kitu kutoka kwa cocos.mapcollider na kutoka kwa cocos.action. Pia ingiza ufunguo kutoka kwa dirisha la pyglet.
  • "Tangaza" anuwai kadhaa za ulimwengu. Vigezo vya ulimwengu vinashirikiwa kati ya kazi. Kwa kweli huwezi kutangaza vigeuzi katika Python, lakini lazima useme kuwa utofauti wa ulimwengu upo katika nambari kuu kabla ya kuitumia. Unaweza kugawanya 0 kama thamani kwa sababu kazi itachukua nafasi ya kupeana thamani sahihi baadaye. Kwa hivyo ongeza chini ya maneno ya kuagiza:

    # "kutangaza" vigezo vya ulimwengu kibodi = 0 scrMang = 0

  • Rekebisha kazi yako ya StartGame:

    • Sema kwamba unatumia kibodi na viwambo vya ulimwengu. Fanya hivi kwa kuandika kibodi ya ulimwengu, scrMang juu ya kazi.
    • Fanya dirisha lisikilize hafla za kibodi.
    • Mwambie takwimu ichukue hatua kulingana na Mdhibiti wa Jukwaa. Utatekeleza PlatformerController hivi karibuni.
    • Unda kiboreshaji cha ramani kushughulikia migongano kati ya tiles ngumu na takwimu.

    def startGame (): kibodi ya ulimwengu, scrMang kuzalishaTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = mzigo ('levelMap).xml ') solidTiles = tileLayer [' solid "] nsoliTiles = tileLayer ['not_solid'] # kibodi = ufunguo. KeyStateHandler () director.window.push_handlers (keyboard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (velocity_on_ = '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 = Scene (scrMang) mkurugenzi. Kukimbia [mchezoSc]

  • Unda mtawala wa jukwaa. Hii ndio itahamisha takwimu kulingana na vitufe vyako.

    • Fafanua mtawala wa jukwaa kama kitengo cha kitendo.
    • Fafanua kasi ya kusonga, kasi ya kuruka na mvuto.
    • Fafanua kazi ya kuanza. Kazi hii inaitwa mara moja, wakati mtawala wa jukwaa ameunganishwa na takwimu. Inapaswa kuweka kasi yake kuwa 0 kwa x na kwa mwelekeo wa y.
    • Fafanua kazi ya hatua. Itarudiwa wakati eneo linaendesha.
    • Mwambie kazi ya hatua utumie kibodi na vigeuzi vya ulimwengu na scrMang.
    • Pata na ubadilishe kasi. Okoa x na kasi ya y katika vigeu tofauti. Weka kasi ya x iwe 1 au -1 (kulingana na ufunguo wa kushoto au kulia ulibanwa) umeongezeka kwa kasi ya kusonga. Ongeza mvuto kwa kasi ya y. Zidisha na wakati wa kupumzika kwa hivyo inafanya kazi vivyo hivyo kwenye vifaa polepole. Ikiwa kitufe cha nafasi kimeshinikizwa na kielelezo kimesimama chini, ruka kwa kubadilisha mwendo wa kasi ili uruke kasi.
    • Hesabu mahali ambapo takwimu inapaswa kuhamia. Basi basi mshughulikiaji wa mgongano arekebishe nafasi hiyo ikiwa iko ndani ya tile ngumu. Mwishowe, songa kielelezo kwenye nafasi mpya iliyobadilishwa.
    • Weka mwelekeo wa msimamizi wa kutembeza kwenye takwimu. Hii inasababisha kamera kusonga kwa njia inayofaa wakati takwimu inahamia.

    darasa PlatformerController (Action): kibodi ya ulimwengu, scrMang on_ground = Kweli MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) def step (self, dt): global keyboard, scroller ikiwa dt> 0.1: # usifanye chochote wakati wa kupumzika kuwa kubwa kurudi vx, vy = self.target.velocity vx = (keyboard [key. RIGHT] - keyboard [key. LEFT]) * self. MOVE_SPEED vy + = ubinafsi..x + = dx mpya.y + = dy self.target.velocity = self.target.collision_handler (mwisho, mpya, vx, vy) self.on_ground = (new.y == last.y) self.target.position = mpya. katikati scrMang.set_focus (* new.center)

5692759 28
5692759 28

Hatua ya 14. Jaribu msimbo wako

Ikiwa ulifuata mfano, sasa unapaswa kusonga Ngwini na funguo za mshale na kuruka kwa kubonyeza mwambaa wa nafasi. Pia, ngwini sasa anapaswa kuanguka chini badala ya kuelea juu ya ardhi.

5692759 29
5692759 29

Hatua ya 15. Unda mwisho wa mchezo

Hata michezo ambayo inaweza kuendelea bila mwisho inapaswa kuwa na uwezekano wa kupoteza. Kwa kuwa kiwango ulichofanya katika mfano na kazi ina mwisho, utahitaji pia kuifanya iweze kushinda kwa kufikia mwisho huo. Vinginevyo, mchezaji angeruka tu kwenye vizuizi vya barafu hapo, ambayo ingechosha.

  • Ndani ya mtawala wa jukwaa, baada ya kuweka mwelekeo, pata nafasi ya x na y ya takwimu. Ikiwa nafasi y iko chini ya 0, piga kazi kumalizaGame () (utaiandika baadaye) na "Mchezo Zaidi" kama hoja. Ikiwa nafasi ya x ni kubwa kuliko saizi ya skrini iliyozidishwa na 3 (ulikuwa umeiweka kama saizi ya kiwango hapo awali).

    posX, posY = self.target.position if posY <0: finishGame ("Game Over") kurudi ikiwa posX> 800 * 3: # size size finishGame ("Level Imekamilika") kurudi

  • Fafanua kumaliza darasaMenu. Inapaswa kuwa kama darasa kuu la menyu uliyoelezea hapo awali, lakini badala ya kuwa na kamba tupu kama kichwa, inapaswa kutumia maandishi yanayobadilika ambayo _init_ kazi inachukua kama hoja. Vitu vya menyu vinapaswa kuandikwa "Jaribu tena" na "Acha" sasa, lakini kazi wanazoita zinakaa sawa.

    darasa FinishMenu (Menyu): def _init _ (kibinafsi, maandishi): super (FinishMenu, self)._ init _ (maandishi) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Jaribu tena", startGame)), (MenuItem ("Acha", pyglet.app.exit))] self.create_menu (menyuItems)

  • Fafanua kazi kumalizaGame (). Inapaswa kuchukua maandishi kama hoja. Inapaswa kutengeneza eneo nje ya msingi wa menyu kuu, FinishMenu na hoja ya maandishi kupitishwa kwenye menyu hii. Basi inapaswa kuendesha eneo hili.

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

5692759 30
5692759 30

Hatua ya 16. Ongeza mikopo

Hapa ndipo unapata sifa kwa nambari yako nzuri, na pia upe sifa kwa mtu mwingine yeyote ambaye alikusaidia njiani. Ikiwa ulitumia picha kutoka kwa wavuti nyingine (kwa idhini), hakikisha kuiweka picha hiyo kwa muundaji wake.

  • Unda CREDITS ya faili na uweke deni zako zote hapo, kama hii:

    Penguin: Kelvin Shadewing, chini ya CC0 Ice block: Michał Banas digit1024 kwenye opengameart.org chini ya CC-BY-SA 3.0

  • Rudi kwenye nambari yako ya chatu na ulete Lebo kutoka cocos.text.
  • Bainisha sifa ndogo za Tabaka. Katika kazi yake ya _init_, soma faili ya CREDITS na utengeneze lebo ya maandishi katika nafasi sahihi nje ya kila mstari ndani yake.

    Mikopo ya darasa (Tabaka): def _init _ (ubinafsi): super (Mikopo, ubinafsi). ") kwa i katika anuwai (0, len (mikopo)): credLabel = Lebo (sifa , font_size = 32, nanga_x =" kushoto ", nanga_y =" juu ") credLabel.position = 25, 500- (i +1) * 40 self.add (sifaLabel)

  • Nenda kwenye darasa lako kuu la menyu na ongeza kipengee cha menyu kilichoitwa "Mikopo" ambayo inaita kazi ya showCredits ukibonyeza.
  • Fafanua kitufe cha BackToMainMenuButton ya Menyu. Fanya menyu hii iwe na kipengee kimoja, kilichoitwa "Nyuma", ambacho huita kazi ya showMainMenu. "Menyu" hii, ambayo ni kama kitufe, inapaswa kushikamana kwa wima chini na usawa juu.

    darasa BackToMainMenuButton (Menyu): def _init _ (self): super (BackToMainMenuButton, self)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMenu))] mwenyewe. tengeneza_menu (menyu ya Vitu)

  • Fafanua onyesho la kazi Mikopo. Inapaswa kutengeneza eneo kutoka kwa safu ya MainMenuBgr na safu ya Mikopo na kuendesha eneo hilo.

    def showCredits (): credSc = Onyesho (MainMenuBgr ()) credSc.add (Mikopo ()) credSc.add (BackToMainMenuButton ()) mkurugenzi.run (credSc)

5692759 31
5692759 31

Hatua ya 17. Angalia msimbo wako

Unapofikiria umemaliza nambari yako, unapaswa kuangalia tena yote. Hii inaweza kukusaidia kugundua ikiwa kuna kitu kinachoweza kuboreshwa, au ikiwa kuna mistari isiyo ya lazima uliyosahau kufuta. Ikiwa ulifuata mfano, nambari yako yote sasa inapaswa kuangalia kama ifuatavyo:

    kutoka kwa cocos.director kuagiza * kutoka cocos.menu kuagiza * kutoka cocos. kuagiza nje * kutoka cocos.layer kuagiza * kutoka cocos.sprite kuagiza * kutoka cocos.tiles kuagiza * kutoka cocos.mapcolliders kuagiza * kutoka cocos.actions kuagiza * kutoka cocos. andiko kuagiza kuagiza Lebo pyglet.app kutoka kwa pyglet.window kuingiza kitufe kutoka hesabu ya kuingiza hesabu kutoka kwa randint # # kutangaza "mabaraza ya ulimwengu ya kibodi = 0 scrMang = 0 darasa MainMenuBgr (ColourLayer): def _init _ (self): super (MainMenuBgr, init _ (0, 200, 255, 255) darasa MainMenu (Menyu): def _init _ (self): super (MainMenu, self)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Start Game", startGame)), (MenuItem ("Credits", showCredits)), (MenuItem ("Acha", pyglet.app.exit))] self.create_menu (menuItems) darasa la Mikopo (Tabaka): def _init _ (ubinafsi): super (Mikopo, ubinafsi). (0, len (sifa)): credLabel = Lebo (sifa , font_size = 32, nanga_x = "kushoto", nanga_y = "juu") credLabel.position = 25, 500- (i + 1) * 40 self.add (credLabel) darasa BackToMainMenuButton (Menyu): def _init _ (self): super (BackToMainMenuButton, self)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMenu))] self.create_menu (menuItems) darasa FinishMenu (Menyu): def _init _ (ubinafsi, maandishi): super (FinishMenu, self)._ init _ (maandishi) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Jaribu tena", startGame)), (MenuItem ("Acha", pyglet. app.exit))] self.create_menu (menyuItems) darasa PlatformerController (Action): kibodi ya ulimwengu, scrMang on_ground = Kweli MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) hatua ya def (self, dt): kibodi ya ulimwengu, scroller ikiwa dt> 0.1: # usifanye chochote wakati wa kupumzika ni kubwa kurudi vx, vy = self.target.velocity vx = (keyboard [key. RIGHT] - keyboard [ufunguo. KUSHOTO]) * ubinafsi. MOVE_SPEED vy + = ubinafsi. MVUTO * dt ikiwa ubinafsi _ground na keyboard [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 (mwisho, mpya, vx, vy) self.on_ground = (new.y == last.y) self.target.position = new.center scrMang.set_focus (* new.center) posX, posY = self.target.position ikiwa posY <0: finishGame ("Mchezo Juu") kurudi ikiwa posX> 800 * 3: # kiwango cha ukubwa kumalizaGame ("Kiwango kilichokamilishwa") kurudi def finishGame (maandishi): menyuSc = Onyesho (MainMenuBgr ()) menyuSc.add (FinishMenu (maandishi)) director.run (menuSc) def showCredits (): credSc = Scene (MainMenuBgr ()) credSc.add (Credits ()) credSc.add (BackToMainMenuButton (mkurugenzi.run (credSc) def hlahisaTilemap (): colAmount = dari (800/16) * 3 # (upana wa skrini / saizi ya tile) * safu 3 Kiasi = dari (600/16) # urefu wa skrini / saizi ya tile tile Faili = wazi ("levelMap.xml", "w") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) kwa i katika anuwai (0, colAmount): tileFile.write ('') makeHole = Uongo ikiwa randi int (0, 50) == 10 na i! = 0: # hairuhusu mashimo kwenye spawnpoint makeHole = Kweli kwa j katika masafa (0, safuAmount): ikiwa hufanyaHole: tileFile.write ('\ n') mwingine: ikiwa j <= barafuUrefu: tileFile.write ('\ n') mwingine: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight + 5) ikiwa iceHeight <0: # punguza tiles kutoka pia barafu ya chini Urefu = randint (1, 5) ikiwa barafuUrefu> safu Kiasi: # vigae vizuizi kutoka kwa barafu kubwa sanaUrefu = randint (int (safuAmount / 2) -5, int (rowAmount / 2) +5) tileFile.write ('\ n ') tileFile. andika ('\ n') tileFile.write ('\ n / n') tileFile.close () def startGame (): kibodi ya ulimwengu, scrMang kuzalishaTilemap () # fig = Sprite ('pingu.png') nafasi ya fig. = (8, 250) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = mzigo ('levelMap.xml') solidTiles = tileLayer ['solid'] nsoliTiles = tileLayer ['not_solid'] # kibodi = key. KeyStateHandler () mkurugenzi.window.push_handlers (keybo ard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (velocity_on_bump = 'slide') fig. ongeza (solidTiles, z = 0) scrMang.add (figLayer, z = 1) # gameSc = Scene (scrMang) director.run (gameSc) def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu (mkurugenzi.

  • Hiyo ni mistari 168 kabisa, na mistari 152 ukihesabu nambari tu. Hii hufanya ionekane kama nyingi, lakini kwa mchezo mgumu kama huu, hii ni kiasi kidogo.
5692759 32
5692759 32

Hatua ya 18. Imemalizika

Sasa jaribu mchezo. Unapopanga kitu, lazima uangalie ikiwa inafanya kazi wakati wowote unapotekeleza kitu kipya. Pia, unaweza kupenda kucheza mchezo ulioandika kwa muda.

Sehemu ya 3 ya 3: Kuchapisha Mchezo

5692759 52
5692759 52

Hatua ya 1. Andika utegemezi

Mtu yeyote anayetumia kompyuta nyingine hatakuwa na programu na maktaba sawa na wewe. Kwa hivyo, utahitaji kuhakikisha kila mtu anayesakinisha mchezo wako anajua haswa ni nini watahitaji kuiendesha. Sio lazima uandike utegemezi wote wa utegemezi wote wa tegemezi zote na kadhalika, lakini unapaswa kuandika angalau utegemezi wa vifurushi vyako na utegemezi wao.

5692759 53
5692759 53

Hatua ya 2. Hakikisha una ruhusa ya kutumia media zote

Hii inatumika kwa picha zote, pamoja na modeli za 3D, muziki, mazungumzo, muziki, maktaba na mifumo uliyotumia kwa mchezo wako. Chochote ambacho haukuandika mwenyewe.

  • Mara nyingi kuna hali kadhaa, kama vile kumshukuru mwandishi au kushiriki marekebisho ya media chini ya leseni hiyo hiyo. Wakati mwingine utaweza kutumia picha bila kuhusisha waundaji ilimradi usilipie mchezo. Ikiwa unapaswa kumsifu mwandishi, fanya mahali pazuri, kama kichupo cha "Mikopo" kwenye mchezo wako.
  • Pia kuna media yenye hakimiliki inayodaiwa na hakuna leseni iliyoainishwa, wakati mwingine na maandishi kama "Haki zote zimehifadhiwa". Ikiwa ndivyo ilivyo, lazima upate ruhusa dhahiri kutoka kwa mwandishi kabla ya kuijumuisha kwenye mchezo wako.
  • Maktaba kawaida hutolewa chini ya leseni ambazo zinaruhusu kutumika kama maktaba. Isipokuwa ya kushangaza ni GPL bila kuunganisha ubaguzi: Leseni kama hiyo inaruhusu tu kuitumia katika mpango na leseni fulani. Na unapaswa kusoma kila wakati angalau vidokezo vya msingi vya leseni ili kuhakikisha chochote unachofanya na media au maktaba inaruhusiwa.

OnyoKutumia media au maktaba kwa njia ambayo leseni hairuhusu katika mchezo ambao unachapisha unaweza kukuingiza katika shida kubwa ya kisheria. Kwa hivyo ama muulize mwandishi au epuka kipengee cha media kabisa ikiwa haujui ikiwa matumizi yako yanaruhusiwa.

5692759 54
5692759 54

Hatua ya 3. Amua juu ya hali unayotaka kuchapisha mchezo wako

Utakuwa unauza mchezo wako? Je! Unataka kuruhusu wengine watumie picha na maoni yako? Wakati unapaswa kuwa mwangalifu juu ya media unayotumia katika mradi wako, kawaida unaweza kuamua juu ya jinsi unataka kuruhusu wengine watumie mchezo wako. Unaweza kutumia leseni ya Creative Commons CC0 kutoa mchezo wako katika uwanja wa umma.. Kuruhusu usambazaji na urekebishaji chini ya hali kadhaa wakati unabaki na haki kadhaa, jaribu Leseni ya Umma ya Gnu (GPL) au leseni ya Usambazaji wa Programu ya Berkeley (BSD). Au, unaweza kufanya programu yako kuwa ya wamiliki, ikimaanisha kuwa hakuna mtu anayeruhusiwa kusambaza au kurekebisha bila idhini yako.

Ingawa inawezekana kupata pesa kwa kuuza michezo, hakuna uwezekano kwamba watu watanunua mchezo wako wa kwanza ambao kawaida huwa na huduma chache na hakuna chochote maalum. Pia, ikiwa mpango wa bure haufanyi kazi, watu waliopakua watasikitishwa tu. Ikiwa walilipa, hata hivyo, watadai pesa zao, na kusababisha shida zaidi kwako na kwa watumiaji. Kwa hivyo fikiria kufanya mipango yako michache ya kwanza ipatikane bure

5692759 55
5692759 55

Hatua ya 4. Amua jinsi unataka kuchapisha mchezo wako

Kila njia ina faida na hasara, kwa hivyo lazima uamue mwenyewe.

  • Kuchapisha kwenye wavuti:

    Ikiwa una wavuti, unaweza kupakia mchezo wako kuifanya ipatikane kwa kupakuliwa. Hakikisha kutoa maagizo wazi juu ya jinsi ya kusanikisha programu, na vile vile utegemezi wote unaohitajika. Ubaya wa hii ni kwamba wachezaji watalazimika kusanikisha utegemezi kwa mikono, ambayo inaweza kuwa ngumu kwa watu wengine.

  • Kutengeneza kifurushi cha msimamizi wa kifurushi:

    Kuna mameneja tofauti wa vifurushi, kama vile apt, Yum, na Homebrew, ambayo inafanya iwe rahisi kwa watu kusanikisha programu katika mazingira ya Linux na Linux. Wote wana muundo tofauti wa kifurushi. Jambo zuri juu ya vifurushi ni kwamba huweka moja kwa moja tegemezi zote (ikiwa unaziweka vizuri). Kwa hivyo mchezaji anapaswa kusanikisha kifurushi chako na kisha anaweza kucheza mchezo. Shida ni kwamba kuna mameneja wengi wa vifurushi tofauti kwenye majukwaa tofauti, kwa hivyo itabidi uweke kazi ya kutoa vifurushi kwa zile za kawaida.

5692759 56
5692759 56

Hatua ya 5. Elekeza kipaumbele kwa programu yako

Fikiria kupakia programu yako kwenye hazina kuu ya kifurushi, kama ile ya Ubuntu na Debian inayodumisha, kuruhusu usanikishaji rahisi. Pia, chapisha katika mabaraza yanayofaa, kama sehemu ya miradi ya GameDev au sehemu ya tigSource. Lakini usikatishwe tamaa ikiwa michezo yako ya kwanza haitakuwa maarufu. Ikiwa una wazo kwamba watu wengi wanapenda, mchezo wako unaweza kujulikana.

Vidokezo

  • Kuwa na subira na nia ya kujifunza. Programu inaweza kuwa ya kukatisha tamaa wakati mwingine!
  • Ikiwa unashangaa jinsi kitu kinafanywa katika mchezo mwingine, na mchezo ni chanzo wazi, unaweza kuangalia nambari yake ya chanzo.
  • Unapotafuta media, jaribu kupata yaliyomo kwenye uwanja wa umma. Tafuta "Creative Commons" au "Public Domain" picha na muziki, na utumie tovuti kama https://opengameart.org au
  • Usinakili sehemu kubwa za nambari bila kuangalia leseni. Mara nyingi ni marufuku, na ikiwa sivyo, kawaida inahitaji ugawaji.
  • Usifanye barua taka au kuchapisha katika maeneo yasiyofaa unapotangaza mchezo wako. Hii inawezekana kukuzuia kutoka kwa ukurasa, inakera tu, na itaharibu sifa yako.

Ilipendekeza: