Spelontwikkeling - Nuttige wenke - 2021
Die ontwikkeling van rekenaarspeletjies kan deur een persoon of die onderneming (ontwikkelingspan) gedoen word. Kommersiële speletjies word geskep deur ontwikkelingspanne wat deur een firma gehuur word. Firmas kan spesialiseer in die vervaardiging van speletjies vir persoonlike rekenaars, spelkonsoles of tabletrekenaars. Ontwikkeling kan gefinansier word deur 'n ander, groter firma - die uitgewer. Die uitgewer aan die einde van die ontwikkeling is besig met die verspreiding van die speletjie en dra die gepaardgaande koste daaraan verbonde. Die teenoorgestelde benadering is so 'n ontwikkeling, wanneer 'n onderneming kopieë van speletjies op sy eie versprei (sonder die deelname van uitgewers), byvoorbeeld deur middel van digitale verspreiding.
Die ontwikkeling van die grootste begrotingspeletjies kan miljoene dollars kos, en oor die afgelope dekades [ wanneer? ] hierdie begrotings het geleidelik gegroei, asook die aantal ontwikkelingspanne en tydsduur vir ontwikkeling. Dus, in die laat negentigerjare, kan 'n span van die PlayStation-konsole vir die eindkliënt deur 'n span van 10 mense per jaar gemaak word, vir PlayStation 2 (die eerste helfte van die 2000's), 'n span van 30-50 mense en twee jaar van ontwikkeling nodig, teen 2012 was dit ' Dit het al gehandel oor spanne van meer as 100 ontwikkelaars en 'n termyn van ongeveer drie jaar. Volgens Alex Moore, 'n spelontwerper van Sumo Digital, sou die prys van die spel vir die eindverbruiker in dieselfde verhouding styg, sou speletjies in 2012 $ 1800 kos, met ander woorde om die verhoogde begrotings te verhaal terwyl dieselfde pryse in die winkels gehandhaaf word, uitgewers moet baie meer kopieë van speletjies verkoop.
'N Speletjie met 'n groot begroting vir twee platforms - die Xbox 360 en PlayStation 3 - het in 2012 gemiddeld $ 20 miljoen gekos, en om dit af te betaal, was dit nodig om ongeveer twee miljoen eksemplare te verkoop.
In die vroeë 1980's, nadat die eerste tuisrekenaars en spelkonsoles verskyn het, kon een programmeerder byna al die take wat met die ontwikkeling van 'n speletjie verband hou, bestuur. Die ontwikkeling van moderne speletjies verg 'n wye verskeidenheid vaardighede en ondersteuningspersoneel. Om aan een projek te werk, is volledige spanne nodig, wat meestal verteenwoordigers van 'n aantal spesialisasies insluit.
Hoe kan u 'n speletjie self skep?
Om 'n speletjie te skep, moet u die programmeringstaal ken, en nou is hulle almal in Engels, en hulle is ingewikkeld, en hulle het hul eie sogenaamde sintaksis, wat u ook moet ken. So stel jy jou voor om 'n speletjie te skep, of hoe?
Natuurlik word bykans alle hoëbegrotingspeletjies met behulp van een van die belangrikste tale vervaardig, maar dit is selfs nie nodig om te weet vir 'n beginner nie.
Daar is spesiale programme vir die skep van speletjies, waarvan een Game Maker is. Dit is spesifiek geskep vir die skep van speletjies (die program word die speletskepper genoem). Persoonlik werk ek in Game Maker en dit stel my in staat om speletjies van hoë gehalte te maak vir enige platform, van Android tot IOS.
U kan ook Unity of Konstrueer 2, as goeie alternatiewe.
Al hierdie instrumente ontwikkel, en vir Game Maker Studio 2 is die tweede deel onlangs vrygestel, waaroor ek hier geskryf het: Wat is nuut in Game Maker Studio 2? GMS 2 hersiening
My persoonlike mening is dat Game Maker een van die gemaklikste programme is om speletjies spesifiek vir beginners te skep, terwyl die bemeestering van eenheid van nuuts af veel meer tyd kan verg.
As u Game Maker kies, dan help my blog en kanaal u aansienlik in die ontwikkeling daarvan, maar as u besluit oor Eenheid of iets anders, is daar ook 'n groot hoeveelheid gratis opvoedkundige materiaal van hoë gehalte in Russies.
In elk geval is die eerste (nul :) stadium die keuse van 'n program om speletjies te skep.
Die eerste fase is die ontwerpdokument
Vervolgens moet u 'n ontwerpdokument vir die nuwe speletjie skep. Met ander woorde, u het 'n idee nodig vir die spel. Waaroor gaan die speletjie? Wat sal daar gebeur? Watter soort genre sal dit wees? Hoeveel tyd en geld neem ontwikkeling in beslag? Daar is baie sulke vrae, en voordat u 'n speletjie begin skep, is dit baie nuttig om 'n soort rowwe plan te maak.
Basiese dinge oor hoe om 'n ontwerpdokument vir die spel te skryf, kan u hier vind:
Hoe om 'n papierspeletjie-ontwerp te skryf
Glo my, sonder 'n voorlopige plan en slegs op entoesiasme met 'n groot waarskynlikheid, sal u nie die spel voltooi nie.
Die belangrikste en belangrikste deel van die skep van 'n speletjie is in werklikheid die skepping daarvan, die skryfkode. Dit hang alles af van die omgewing en die program waarin u die spel speel, maar in die Game Maker en vir beginners is daar 'n dwelm- en druppelstelsel - drag and drop.
'N Soortgelyke stelsel is nie net in GM nie, maar dit is byvoorbeeld ook in kaartredakteurs en ontwerpers vir gewilde speletjies. Terloops, dit is met mods vir gewilde speletjies wat ek aanbeveel dat u speletjies begin maak.
Waar om spelontwikkeling te begin
Om u eerste wedstryd van nuuts af te maak, hoef u nie die programmeringstaal te ken nie, gebruik die dwelm- en druppelstelsel, wat soos volg lyk:
'N Merkwaardige kenmerk van Game Maker Studio 2 is dat al hierdie elemente outomaties gedekripteer word na die programkode wat die ontwikkelaar sien.
Dit stel u in staat om geleidelik die kode aan te leer en van dwelm en druppel na kodering oor te gaan.
Spesifieke vrae soos: hoe om 'n beweging te maak, hoe om 'n opname te maak, wat is die effekte en al daardie jazz, kan jy vind op my YouTube-kanaal in die vorm van spesiale lesse oor die basiese beginsels van die skep van speletjies.
Hoe lank neem dit om 'n speletjie te skep?
Die vraag is ingewikkeld, dit hang af van u vaardighede, watter soort spel dit is en ander faktore.
Soms kan 'n ervare persoon binne 'n paar weke 'n eenvoudige telefonspel doen, soms word speletjies van medium kwaliteit deur 6-12 maande deur 'n klein span van verskillende mense gemaak, maar groot projekte word deur groot ateljees gemaak en ontwikkeling kan 1-2 of meer jaar duur, terwyl werk 'n span van 100 of meer mense.
Volgens benaderde gegewens duur die skepping van een groot wedstryd ongeveer 2-3 jaar vir 'n span van 200 mense, as ons praat van ernstige projekte soos GTA 5.
Moenie terselfdertyd vergeet dat daar uitsonderings op die reëls is nie. Notch het die eerste weergawe van Minecraft in 'n week geskryf en hierdie weergawe het reeds die meeste basiese strukture gehad. maar uiteindelik het die ontwikkeling etlike jare geduur, hoewel 'n baie klein span, anders as GTA, aan Minecraft gewerk het, en die omset uit Minecraft baie ernstig was.
Alhoewel dit meer 'n uitsondering is, is dit nie 'n reël nie. Nou is die kompetisie baie hoër en sulke super-suksesvolle en super goedkoop projekte lyk al hoe minder.
Die derde fase - grafika
Grafika word gewoonlik parallel gedoen met die ontwikkeling en kode van kode, en meestal is dit die individu. Dit is baie moeilik om die werk van nie net 'n programmeerder nie, maar ook 'n ontwerper te kombineer, maar soms kan dit alleen gedoen word. Daarbenewens het sommige projekte nie baie hoë kwaliteit grafika nodig nie, of voorbereide foto's en sprites word geneem.
Lees: Waar kry jy sprites vir speletjies?
Grafiek en tekening is 'n baie duur proses.
Volgens my ervaring kan dit 40-60% van die totale tyd wat aan grafika spandeer word, as u die spel alleen maak, neem. In wese, vir 'n indie-alleen-ontwikkelaar, kan goeie grafieke die totale tyd wat dit neem om 'n speletjie te skep, verdubbel. En as verdubbeling van 1 maand tot 2 nie eng is nie, dan is verdubbeling van 2 tot 4 jaar baie.
Daarom word dit sterk aanbeveel dat beginnerontwikkelaars alle moontlike maniere gebruik om gratis grafika te kry (neem 'n kunstenaar / ontwerper miskien as deel) of om die grafiese ontwerp minimaal te maak as die eerste speletjies.
In uiterste gevalle kan u grafieke afsonderlik aan die kant bestel deur middel van outsourcing.
As u egter alles self wil doen, is daar baie maniere om te leer hoe om te teken. Ek leer ook (onlangs gekoop raad) en vir die onderrig van tekening kan ek u 'n paar goeie YouTube-kanale adviseer:
Goeie YouTube-kanale oor Gamedev en grafika
Hoe lank neem dit om tekeninge te bestudeer?
In die algemeen kan en moet u, soos enige onderneming, u hele lewe leer, maar is daar geen beperking op volmaaktheid nie. Kyk egter weer my tekeninge.
Wel, die afgryse is nie direk nie? Sleg natuurlik, maar nie hier nie?
Wel, ek het dit met 'n rekenaarmuis in 'n baie eenvoudige grafiese redakteur geteken, en ek het geleer om 1-2 maande te teken, maksimum 1 prentjie per week te teken.
Ek dink jy kan binne 'n jaar 'n baie goeie vlak bereik as jy 1-3 uur per dag spandeer om die teoretiese basis te teken en te bestudeer.
Ek het 'n video (16 minute):
So waar begin jy? Dit is makliker om te beantwoord waar om te begin nie die moeite werd is nie, naamlik met groot projekte, soos volledige 3D FPS, MMO of selfs 'n lang platformspel uit die 16-bis-era. Die nuutste fout by beginnersontwikkelaars is om met 'n groot projek, gebaseer op die Cool Idea, te begin of 'n projek te neem wat eenvoudig lyk en eindig met 'n halfvol klomp spaghettikode. Aanvanklik moet u klein projekte skep.
In vroeë projekte is u hoofdoel om te bestudeer, en nie Cool Ideas te implementeer nie. Deur die projek klein te hou, kan u fokus op die aanleer van nuwe tegnieke, eerder as om 'n groot hoeveelheid tyd te spandeer aan die bestuur van kode en herversiering. Ondanks die feit dat u cool idee onbeduidend kan wees, is die realiteit van die ontwikkelingsbedryf dat hoe groter die projek, hoe groter is die kans dat dit 'n fout in die argitektuur sal maak. En hoe groter die projek, hoe duurder is hierdie fout. Onthou jy die verhaal van Daedalus en sy seun Icarus? Daedalus het vlerke was en vere vir sy seun geskep. Hy het Icarus gewaarsku om nie te naby aan die son te vlieg nie. Maar Icarus het die waarskuwing geïgnoreer en die vlerke het gesmelt en die swaartekrag het hom inhaal.
Onthou dus: moenie te naby aan die son vlieg op u nuwe programmeerdervlerke nie.
As u al die bogenoemde in ag neem, is hier 'n paar wenke oor waar om te begin.
Grafika en verwerking van geleenthede
As u nog nooit iets geprogrammeer het wat met grafika of 'n GUI verband hou nie, moet u met iets klein begin om u voete nat te maak. My eerste projek was tic-tac-toe, so selfs ek het 'n beskeie begin gehad. 'N Paar idees vir die eerste projek:
Een-gewapende bandiet simulator
Vier in 'n ry
Die doel van u eerste projek is om van konsole-ontwikkeling na gebeurtenisgedrewe grafiese toepassings te beweeg. Hy sal u ook die grondbeginsels van spellogika en argitektuur leer. Ek beveel iets stap-vir-stap aan, want bewegingspeletjies is 'n heeltemal ander dier.
Probeer om die projek eenvoudig te hou sodat u dit kan voltooi en nie die helfte van die belangstelling kan verloor nie, maar nooit die spel sal beëindig nie. Dit is belangrik om die speletjie te voltooi, want u leer nie die ontwikkelingsproses as u verskillende onvoltooide speletjies op u hardeskyf het nie.
Daar is een punt wat ek wil uitwys aan diegene wat tic-tac-toe of vier in 'n ry gaan maak. Moenie nou baie oor kunsmatige intelligensie bekommerd wees nie. Om 'n speletjie vir slegs twee spelers te maak of om met 'n rekenaar te speel wat ewekansige bewegings maak, is genoeg om te begin.
As u voorheen grafika en gebeurtenisverwerking behandel het en op hierdie gebied gemaklik voel, kan u direk na die volgende stap gaan.
Sinchronisasie, beweging, botsings, animasie
Noudat u genoeg van die grafika het, is dit tyd om iets real-time te doen. Hier is 'n paar voorstelle:
Hier sal u kennis maak met beweging, tyd, animasie, botsingsopsporing, die spelsiklus, berekening van punte, oorwinnings en nederlae en ander belangrike basiese konsepte wat in elke wedstryd gebruik word.
Duck Hunt en Pong is goeie projekte vir diegene wat reeds ervaring het met die programmering van grafika en gebeure. Dit het 'n eenvoudige opsporing van botsings en al die belangrike basiese beginsels van intydse speletjies.
Space Invaders en Galaga is goeie keuses vir die tweede / derde projek. Dit het vlakke, dus u moet leer hoe om van vlak na vlak te beweeg met behulp van 'n staatsmasjien. U kan hier lees oor eindige masjiene. Speletjies in die styl van "skiet almal" vereis ook dat eenvoudige gedragspatrone vir vyande geskep word, wat 'n stap in die rigting van kunsmatige intelligensie is.
Tetris is goed vir 'n tweede / derde projek. Dit het baie min logika nodig om 'n puzzelspel te skep. Dit is 'n ordentlike grootte speletjie, dus u moet leer hoe u u program in verskillende bronnelêers kan verdeel, waaroor u meer kan lees. Moenie Tetris onderskat nie. Ek het onderskat en kyk net na hierdie grillerige gemors in die Lazy Blocks-kode.
'N Tipiese newbie-fout is om die beste spel van alle tye te probeer maak, eindig met herengineering. Dit wil sê, as hy probeer om die beste spel / enjin te skryf en dit alles uiteindelik slegs 'n klein gedeelte van wat geskryf is, gebruik.
Toe ek 'n beginner was, het ek AI heringineer vir tic-tac-toe. Ek wou 'n speletjie maak met 'n onoorwinlike AI. Ek het dit reggekry deur 'n rekenaar te programmeer om al die moontlike lokvalle te ken. Klink cool reg? Dit het amper 40.000 duisend reëls met meestal gekopieerde kode en 'n maand van my vrye tyd geneem.
Later het ek datastrukture geleer en geleer oor die Minimax-algoritme, wat met 'n kleiner kodegrootte nie net die regte ding gedoen het nie, maar dit ook beter gedoen het.
Leer dus uit my foute en wees nie te ambisieus nie. Fokus daarop om te leer hoe om speletjies te maak, nie net om dit te maak nie.
Beplanning, botsingsanalise, fisika, vlakke, kunsmatige intelligensie
Noudat u twee of drie klein speletjies agter u het, is dit tyd om u eerste groot projek te maak.
Tot dusver het u waarskynlik geprogrammeer soos u moet. Dit sal op hierdie punt eindig. In die regte wêreld word die meeste ontwikkelingsprosesse voltooi voordat die eerste reël kode geskryf word. Niks kan erger wees as die besef dat u al die geskrewe kode sal moet uitgooi nie, want u het nie vooraf alles beplan nie. Noudat u ervaring het met die skep van speletjies, weet u waaruit die ontwikkelingsproses bestaan. Nou kan u die speletjies beplan voordat u dit begin maak.
Nou oor u volgende wedstryd. Break Out en Puzzle Bobble is goed vir die derde projek omdat dit gevorderde botsingsherkenning en fisika insluit. Fisika is belangrik omdat dit die spel 'n realistiese gevoel gee. Selfs Super Mario Brothers het 'n gevoel van erns en traagheid. Biljart is 'n uitstekende projek vir diegene wat gyrusse met fisika wil belemmer.
In speletjies soos biljart moet u nie net botsings opspoor nie, maar dit ook in 'n spesifieke volgorde verwerk. Die hantering van botsings verskil dramaties van die opsporing daarvan. Alhoewel dit maklik lyk om biljart of 'n 2D-platform te skep, is botsingsanalise in die regte volgorde 'n verwarrende proses en moet dit nie onderskat word nie.
Break out en Puzzle Bobble sluit ook vlakontwerp in en vereis dat hul bronne gelaai en vrygestel word. Dit is 'n goeie ervaring om 'n redakteur vir die spel te skep. Met redakteurs kan u maklik vlakke skep en dit nie dwing om in die toepassing te soldeer nie. Ek het 'n artikel (eng.) Oor die skep van 'n vlak redakteur.
U wil miskien ook kunsmatige intelligensie (AI) skryf. Een opsie is om terug te keer na tic-tac-toe of vier in 'n ry en 'n onoorwinlike AI te skryf. U moet nou reeds die datastrukture ken en die kennis van bome kan gebruik om die Minimax-algoritme te kan gebruik. Met hierdie algoritme kan u al die moontlike uitkomste van tic-tac-toe bereken en 'n onoorwinlike AI skep. Dit is snaaks om jou vriende daarmee te ontstel. Miskien wil u ook verskillende moeilikheidsvlakke doen. 'N Spel bring nie vreugde as dit nie gewen kan word nie.
Pac Man is 'n uitstekende manier om AI te skryf. U moet die boom- / grafstrukture en soekalgoritmes ken, soos A *, sodat die spoke deur die doolhof kan gaan. Dit sal ook nodig wees om die spoke in 'n span te laat werk. Dit alles is handig te pas as u speletjies maak met komplekse AI, soos intydse strategieë. U kan hier oor die basiese beginsels van AI lees.
Platformers, Aksie / Avontuur, RPG, RTS, enjins
Noudat u die ervaring opgedoen het om 'n goed beplande speletjie te skep, is u gereed om 'n aksie / avontuur / platform te skep. Dit is die hoogtepunt van grafika, beweging, animasie, botsingsanalise / opsporing, fisika, AI, sagteware-argitektuur en alles wat u op hierdie punt gaan leer. Vir diegene wat meer ambisieus is, kan u voorstel om 'n real-time strategie (RTS) of 'n rollespel (RPG) te maak. Wees versigtig, want RPG en RTS is regtig groot projekte.
RPG's het 'n ingewikkelde argitektuur en benodig baie beplanning. U moet elke wapen, wapenrusting, bykomstigheid, aanval, item, betowering, vyand, kaart, baas, kerker, ens. Beplan. tot in die fynste besonderhede. Dit behoort alles in harmonie te werk, en dit is sagkens 'n maklike taak. As u ontwerpprojek dus soos 'n draaiboek of 'n strokiesprent lyk, sal u meer moet doen baie werk.
RTS's is ook argitektonies ingewikkeld en benodig ook baie AI. U moet die pad vir die eenhede soek, opdragte deur hulle ontvang, verskillende gedrag afhangende van die opdragte wat u ontvang. As u nog nooit tevore AI gedoen het nie, is dit die beste om met die Pac Man-kloon te begin om aan die gang te kom.
U sal waarskynlik vir die eerste keer 'n enjin vir u spel moet maak. Wat vermy moet word, is die skepping van 'n universele enjin. Создавая движок не пытайтесь сделать его подходящем для любой игры. Если ваша игра требует x, y и z, делайте движок который умеет x, y и z. Движки создают исходя из того что нужно для конкретной игры, а не из того что любой игре может потенциально понадобится.
Dit wil voorkom asof almal die volgende groot MMO wil doen. Aanlyn-speletjies is nie iets wat u vinnig kan verstaan ​​nie. Dit het ek besef toe ek direk na die voltooiing van die tic-tac-toe aanlynpoker probeer doen het.
Die toevoeging van 'n netwerk bemoeilik die spel baie. As een speler iets doen, moet u inligting daaroor aan almal stuur. Dit is asof u regterhand nie weet wat die linkerhand doen nie. U sal ook moet kies tussen die laai van die bediener en wat dit kan beheer. Hoe meer die bedienergedeelte doen, hoe minder is daar geleenthede om die kliënt te bedrieg, maar dit beteken ook 'n groter las op die bediener. Vir aksie en ander vinnige speletjies, moet u bekommerd wees oor netwerkvertraging en pakketverlies.
U moet ten minste een goed beplande speletjie voltooi voordat u 'n netwerkspel wil maak. Probeer as die eerste netwerkprojek iets doen wat nie van kritieke belang is nie. 'N Eenvoudige kletsbediener / kliënt is byvoorbeeld die beste praktyk. U kan ook terugkeer na die tic-tac-toe / vier op 'n ry en die geleentheid bied om aanlyn daarop te speel. Probeer ook om 'n netwerkkaart of bordspeletjie te maak.
Probeer om iets intyds te doen nadat u eerste netwerkprojek gereed is. In u eerste netwerkaansoek het u waarskynlik TCP gebruik om seker te maak dat die data wat u ontvang in die volgorde waarin u dit gestuur het, aankom. Vir speletjies waarin daar baie gewerk word, sal die vertragings wat deur TCP geskep word, waarskynlik te groot wees, dus UDP moet gebruik. UDP waarborg nie die afleweringsbevel sowel as die aflewering self in die algemeen nie. Aangesien UDP nie ekstra integriteitsondersoeke doen nie, is dit vinniger. U moet die gemak daarvan gebruik om TCP te gebruik in ruil vir UDP-snelheid en die noodsaaklikheid om die integriteit van die data onafhanklik te verifieer wanneer u die spel skep.
Voordat u 3D-speletjies maak, moet u ten minste een goed beplande speletjie maak en 'n goeie begrip hê van die driedimensionele vektore, wiskunde, lineêre en Newtonse fisika. Hier moet u te make hê met hoekpunte, teksture, beligting, skaduwees, die bepaling van die interaksie met voorwerpe in die driedimensionele ruimte, laaimodelle en ander dinge wat moeilik klink.
Die goeie nuus is dat as u al 4 of 5 speletjies gemaak het, u die basiese beginsels ken wat nodig is om 'n speletjie te skep. U is reeds vertroud met die ontwikkelingsproses en ken u vaardighede as programmeerder. Dit maak nie saak 'n driedimensionele shooter of twee-dimensionele, hy is nog steeds 'n shooter. 2D RPG of 3D RPG is steeds 'n RPG.
Moet dit nie as 'n verskoning beskou om 2D oor te slaan en direk na 3D te gaan nie. Voordat u leer hardloop, moet u leer loop.