Snake5's Blog

Kāda spēļu veidotāja blogs…

Pārmaiņas…

Izskatās, ka būšu pavisam “pārvācies” uz twitter/cragegames.com un pārsvarā tagad rakstu angliski.

Blogs vēl paliks, jo kaut ko noderīgu tajā var izrakt, vienkārši neredzu lielu nepieciešamību ierobežot savu publiku dubļos grimstošā valstī. Spēļu izstrāde tās oriģinālajā formā šajā valstī ir praktiski izmirusi, tāpēc šaubos, ka kādam būs iebildumi.

Gunplay

Ir atnākusi demo versija: http://forums.gamedev.lv/viewtopic.php?f=18&t=115

RSAT (daudzstūru sadursmju rēķināšanas algoritms)

Algoritms RSAT (refined separating axis test) ir viena interesanta SAT variācija, kuru izdomāju šodien.

Algoritms pagaidām nav perfekts, kā jau to varētu gaidīt no iteratīvajiem algoritmiem, bet pašos pamatos strādā +/- normāli. Iespēja kļūdīties ir diezgan maza.

Ideja ir pavisam vienkārša – pirmā testa ass tiek izvēlēta kaut kādā labā veidā (piemēram, no viena daudzstūra centra uz otra centru), tiek uzlabota procesā iteratīvi un pēc tās pārbauda, cik dziļa ir sadursme.

Oriģinālais idejas apraksts:

Iterative convex poly-something intersection test.

- pick the initial test plane
- while there's still time...
- find intersection data, shift plane to middle of intersection
- if plane doesn't intersect both...
--- found our plane, objects do not intersect
- else...
--- if cut is balanced...
----- found our plane and depth, objects intersect
--- else...
----- insufficient data, decide to stay if there's time, process intersection otherwise

1) pick initial plane
- a simple algorithm, such as the position = midpoint between centers and normal = direction from c0 to c1 will do

2) find intersection data
- choices:
--- farthest vertex from cut towards the other side (good next estimate & if plane gets turned > 90*, intersection found)

3) extend to 3D
- need 3 points to make a plane instead of 2
- use support points only to rotate and shift the existing plane instead..

Pirmā implementācija: http://pastebin.com/4J2Ywwiq

Reāli beigās sanāca gan tā, ka pozīcijas informāciju no plaknes nevajadzēja. Pietika tikai ar asi (virziena normālvektoru).

Tā kā testēju Gunplay kodā, pagaidām nevaru nevienu sakarīgu screenshotu iedot, bet… kādam viņus vajag? Diez vai kāds gūs labumu, ieraugot atšķirību starp daudzstūriem, kas sadūrušies kopā un starp tiem, kuri nav… 😀

Procedurāli uzlabojumi

Iemetu “area light” (uzlabotu vecā stila point light) un lightshaft-izer’u (objektu, kas pārveido tam piesaistītos blokus par lightshaftiem).

Kā mēs redzam, grafiskais noformējums ir +/- tāds pats, kāds bija pirms 2 gadiem. Izņemot ambient occlusion. Tas tika pārāk ilgi rēķināts, tāpēc būs jāizdomā kāds efektīvāks veids, kā rēķināt vai optimizēt to…

SpeedrunLOL

2.5 dienās pārkodēju visu (vairāk uzsvērt, neizejot no līnijas, nav iespējams 😀 ) Gunplay līmeņu redaktoru un kopā strādāju pie projekta pārnešanas kādas 3-4 dienas. Nedēļas laikā domāju atdzīvināt visu pārējo uz jaunā dzinēja.

Gan jau drīz vēl kaut ko interesantu varēšu pastāstīt (un parādīt) šajā sakarā…

Texture Designer – iznākusi jaunā versija

Pēc dažu nedēļu darba beidzot ir iznākusi 1.1 versija. Kopā ar “3D preview”, krāsu līknēm, iespēju veidot savus tekstūru filtrus kopā nāca arī daudzas citas un arī neliela atlaide.

Līdz vasaras beigām cena ir nolaista līdz 20 eiro (~Ls 14).

Ja vēl joprojām nešķiet pietiekami noderīgi, iesaku noskatīties šos video –

Demonstrācijas video:

un otro pamācības video:

Vairāk informācijas (un iespēju nopirkt) var atrast šeit: http://cragegames.com/texture-designer

Texture Designer

Texture Designer ir jauns tekstūru apstrādes rīks, veidots tekstūru/2D/UI māksliniekiem. Galvenie uzdevumi – vienkāršot iteratīvo dizaina procesu un samazināt lieko darbību skaitu.

Izstrādes procesā tika izvirzīti šādi dizaina mērķi:

  • Jāsamazina lieko failu skaits;
  • Tekstūru apstrādei jānotiek ātri;
  • Jāizvairās no liekām darbībām;
  • Visam jābūt kontrolējamam.
Galvenās īpašības
  • Vienkāršs interfeiss;
  • Vairāk nekā 40 attēlu apstrādes rīki;
  • Iespēja apvienot tekstūru ģenerēšanu ar apstrādi;
  • Ļoti ātra, uz grafiskā procesora balstīta attēlu apstrāde;
  • Pieejama dokumentācija un lietošanas paraugi;
  • …un bezmaksas demonstrācijas versija!

Minimālās prasības

Nepieciešama videokarte ar Shader Model 3 (vai jaunāka) atbalstu – tai jāspēj strādāt ar 32 bitu floating point RGBA tekstūrām un “dynamic branching”. Programma atbalsta tikai Windows XP/Vista/7 operētājsistēmas.

Demonstrācijas versija

Spied šeit, lai ielādētu bezmaksas demonstrācijas versiju.

Vienīgais šīs versijas ierobežojums – maksimālais tekstūru izmērs ir 256×256.

Ekrānšāviņi:

Pilnā versija

Ja nopirksi pilno versiju, iegūsi…

  • iespēju apstrādāt tekstūras līdz 4096×4096 izmēram (izmērs var mainīties jaunajās versijās)
  • bezmaksas jaunās programmas versijas, kuras saturēs jaunus rīkus un kļūdu labojumus
  • iespēju nopirkt trešo, vislielāko versiju (ja tāda tiks izlaista) daudz lētāk

Programmai noteiktā cena ir €50 (~$71 / ~Ls 35).

EDIT: Parādījusies iespēja nopirkt, to var atrast šeit.

Progress ar tekstūru dizaina rīku

Implementēju universālo blur funkciju un visas Photoshop/GIMP blend modes. Vēl dažas iespējas un būs gatavs laišanai pasaulē (t.i. pārdošanai vai kaut kam tādam).

Spēļu dizaina pārdomas…

Šis raksts varētu sanākt diezgan garš, bet diezgan garš ir arī lietu saraksts, par kurām gribēju rakstīt, tāpēc pieļauju zināmu murgainības pakāpi šajā dokumentā.

Njā, ar ko lai sāk… Ir jau atkal viens no tiem laikiem, kad rīts ir vakars un vakars ir rīts. Pusmiegā, nespējot orientēties uz jebkādiem mērķiem, tiek apzinātas dažādas domas, kuras ikdienas steigā tiek norakstītas kā laika kavēkļi. Dažādas vērtīgas domas radās nesen.

Pēdējā gada laikā aktīvi trenējos pašprezentācijā. Ideja ir diezgan vienkārša – censties pēc iespējas plūstošāk un sakarīgāk izstāstīt savas domas jebkam, ko iedomājas telpā esam. Labumi ir tādi paši, kā runāšanai pie spoguļa, tikai ar dažiem izņēmumiem – neviens neliek atbalstīties pie prezentāciju galda (kuru prominenti attiecīgajos pasākumos okupē portatīvais dators), neviens neliek stāvēt, un nav konkrētu punktu, uz kuriem jāskatās. Rezultātā netiek tik daudz trenētas garo prezentāciju izturēšanas prasmes, bet vairāk domas nonāk tieši pašam, un tās nonāk ļoti ērti uztveramā formā. Dažādās vērtīgās domas radās tieši šādā veidā.

Puspatiesību pārslodze. Izcils veids, kā melot sev ilgtermiņā. Gadsimtiem marinētais jautājums par spēles procesa nepieciešamību spēlēs bija mana puspatiesība, kuru savlaicīgi paspēju saēsties līdz nelabumam. Taisnība jau tur ir, bet… kas tad tieši veido spēles procesu? Tās ir pogas, ko spiež? Attēli, ko redz.. vai skaņa, ko dzird? Kā nesen lasīju, gameplay ir diezgan muļķīgs termins, un gribot vai negribot, te ir jāpiekrīt. Tas vienmēr pasaka to, cik laba šķiet spēle. Kas mūs noved pie laicīgā secinājuma: spēles process ir viss, kas tiek darīts ar spēli. Laicīgs tāpēc, ka būtu pēdējais laiks to saprast.

Atceros, ka pēdējā pašprezentācijas sesijā arī aprunāju visu savu darbu plusus, mīnusus, un cik lielā tumsā biju, kad veidoju. Diezgan interesants temats patiesībā. Galvenokārt tāpēc, ka beidzot kaut ko saprotu. Tie visi iemesli, kurus nosaucu par neizdošanos u.tml. tagad šķiet sīkumi, aisbergu redzamās daļas. Patiesībā… viss bija daudz vienkāršāk… <Attinam atpakaļ un atskaņojam!>

Viss sākās ar vienkāršu domu – kāpēc viss sāka iet uz leju? Zinu it kā vairāk, bet rezultātu mazāk. Protu it kā vairāk, bet paveicu mazāk. Pirmais secinājums – bezmiega depresija. Otrais secinājums – jābūt kādam loģiskam iemeslam, kaut niecīgam, lai šāda doma vispār parādītos. Sāku domāt par to, kāpēc Gunplay vispār cilvēkiem interesēja. Grafika sūdīgāka nekā jaunajiem projektiem, gameplay sarežģīts. Interesanti bija tas, ka cilvēki lielākas problēmas saskatīja tieši jauno spēļu grafikā. Skatoties uz to, kā cilvēki spēj sajust problēmas, bet nespēj to avotu vienmēr noteikt mākslas darbos, šķiet ticama tāda teorija, ka problēmas sāka parādīties spēles procesā. Kāds vērīgāks sekotājs varbūt atceras, ka apsūdzības bija izvirzītas arī spēles procesa (kontroļu/spēlētāja vadības) daļā, ne tikai grafikas daļā. Tomēr šis bija interesants piemērs.

Kritika par spēlētāja vadību nebija atbilstoša grūtības līmenim – pirmajā Gunplay versijā bija daudz uzmanīgāk jāpārvietojas. Kādu laiku mēģināju saprast, kā radās šādi pretstati, līdz nonācu līdz vienkāršai teorijai, kas zināmā mērā saskan ar to, ko es iepriekš teicu par spēles procesu – spēlē visam jāsaskan. Angļu valodā ir viens labs vārds tam – “consistency”. Ja nešķiet, ka pārvietoties ir bīstami, draudi nokrist no pārāk liela augstuma arī neliksies nopietni. Kaut arī tieši šādu kritienu rezultātā parasti izdevās piebeigt galveno varoni. Līdzīgi bija ar pretinieku šaušanu – ja ievainojumi nebija paliekoši, spēlētājs tos neuztvēra pietiekami nopietni. Ah, un vēl tas, ka pirmajā Gunplay versijā pārvietoties bija daudz patīkamāk. Plūstošāks process.

Vēl biju arī aprunājis to, cik daudz zināju un cik nē tajā laikā par šīm lietām un sapratu to, ka pirmās spēles izdodas tik labi tāpēc, ka autori cenšas implementēt visu, kas šķiet piemērots un nepieciešams, nedomājot par dizainu. Vienmērīgi turas pie idejām un loģiskos ierobežojumus uzskata par nepieciešamiem. Spēļu dizainu zinot, ir jau cita pakāpe, kur tiek domāts par to visu, bet līdz ar to, dažādi dabiski ierobežojumi tiek atmesti. Nākamā pakāpe, pie kuras arī es tagad esmu pieslīdējis ir tad, kad ierobežojumi tiek likti atpakaļ, šoreiz jau domājot par to visu un saskatot potenciālās elementu nesaderības problēmas u.c. jokus. Tā kā par Gunplay jau pietiekami aprunāts, jāiet bija tālāk.

Karstā nauda bija fundamentāli nestabils projekts. Kaut kas traks. Tile-based platformu spēle ar platformu/slīpu virsmu imitāciju sajaukumu. Tīri no galvenā varoņa pārvietošanās viedokļa traki. Līdzīgi bija ar arkādes uzdevumu / stāsta sajaukumu. Ja ir stāsts, tad ir piedzīvojums un jebkurā citā gadījumā viss neies kopā tik labi. Tā kā interesēja izveidot politiska rakstua spēli ar īsfilmām un sižetu, domas par labu dizainu sanāca pazaudēt. Nav galā tik traki sanācis (jo pietika drosmes pārveidot gandrīz visu procesu), bet ar pareizo sākumu varēju visu izdarīt daudz labāk. Kaut vai paņemt Gunplay dzinēju un uz tā kaut ko bīdīt. Cik no tiem laikiem atceros, nebija gan tik vienkārši ar to, jo dzinējam un spēlei kods bija apmēram tas pats, ar dažiem izņēmumiem. Pamatsistēma kaut kad jāpārraksta jebkurā gadījumā… jaunajā dzinējā gan kļūda ir labota un, kā redzams, tagad varu ātri veidot gan spēles, gan citas programmas uz vienas un tās pašas bāzes.

Crazy Maze gan – manuprāt ar pareizo grafisko stilu un labu mākslinieku, kā arī ērtākām kontrolēm un, iespējams, citādāku galveno varoni, varētu būt manuprāt sanākusi GotY. ^_^ Peles kustības nav ērtākais spēles kontrolēšanas veids tik garam piedzīvojumam.

Nobeigumā – nedaudz par nākotni. Pēc visa šī saprašanas, nešķiet, ka tagad uz vietas kļūšu par labāku spēļu veidotāju. Bet es vismaz skaidri zinu, kas ir vajadzīgs, lai izveidotu labu spēli. Un tad jau redzēsim, kas sanāks šoreiz. Par pēdējo projektu runājot – neparedzētu apstākļu dēļ viss ir nedaudz iekavējies, tomēr ceru jau šonedēļ dabūt kaut ko spēlei nedaudz līdzīgu. Tad, kad būs tas, visam būtu jāiet uz priekšu viegli, bez īpašām problēmām. Galvenā problēma – tikt galā ar grafisko dizainu. Viens attēls ar to, ko man tagad dzinējs spēj:

GPU tekstūru dizaina rīks

Kādu laiku strādāju pie šāda rīka, ar kura palīdzību varētu ātri un vienkārši modificēt tekstūras.

Uzmetu alpha versiju ar minimālu funkciju skaitu: http://www.box.net/shared/xcj9n0n9r5

Screenshot’i: