Tarina ja maailmanrakennus
A Chain of Pain on kehitteillä oleva tarinavetoinen ensimmäisen persoonan narratiivinen peli, jonka suunnittelu rakentuu laajemman tarinan ja kehittyvän loren ympärille. Maailman historiaa, ympäristön kautta kerrottavaa tarinaa, kohtaamisia ja pelin rakennetta suunnitellaan tukemaan tarinaa myös ilman suoraa dialogia.
Nykyinen pelattava osuus keskittyy gameplay- ja teknisiin järjestelmiin, joiden päälle narratiivinen kokemus rakentuu. Dialogia, pelaajan valintoja, tavoitteita, tarinatapahtumien laukaisimia, haarautuvia loppuja tai täyttä narratiivista etenemistä ei ole vielä toteutettu. Pelisuunnittelu, ohjelmistokehitys, kentän koostaminen, hahmokehitys ja alkuperäinen musiikki kuuluvat samaan itsenäisesti johdettuun projektiin.
Gameplay-järjestelmät ja pelattava osuus
Ensimmäisen persoonan tutkiminen ja stealth-painotteinen liikkuminen muodostavat nykyisen pelisilmukan sairaalaympäristössä. Hiipiminen, kyykistyminen, juoksu ja rajallinen panic sprint tarjoavat eri tapoja liikkua kohtaamistilanteissa ja paeta.
Uudelleenkäytettävä katseeseen perustuva interaktiojärjestelmä yhdistää pelaajan ympäristöön. Siihen kuuluu pelaajan ja vihollisen yhteinen ovijärjestelmä. Taskulamppu tukee tutkimista ja vaikuttaa samalla vihollisen havainnointiin. Liikkumisen ja ovien äänet ovat osa samaa pelisilmukkaa.
Haavat paranevat vaiheittain, ja mukana on kriittinen tila. Kiinniotto ja kuolema johtavat uuteen yritykseen. Nämä pelaajan järjestelmät muodostavat laajemman pelin pelattavan perustan; Hunter on yksi sen keskeisistä järjestelmistä.
Ympäristö ja level design
Laaja ympäristö yhdistää kartanon ja kaksi sairaalarakennusta yhteen One File Per Actor -karttaan. Koostan tilat, kulkureitit ja kohtaamisalueet lisensoiduista kolmansien osapuolten modulaarisista ympäristöasseteista; alkuperäiset assetit eivät ole omaa mallinnustyötäni. Maailman historia ja ympäristön kautta kerrottava tarina ohjaavat tilojen suunnittelua. H2-sairaala yhdistää tällä hetkellä monikerroksisen NavMeshin, AI:n toiminta-alueen, esteet, lukitut reitit ja yhteiseen interaktiojärjestelmään sovitetut ovet.
Yksi skriptattu Door-14-väijytys ohjaa Hunteria hetkellisesti tavallisen StateTree-toiminnan ulkopuolella ja palauttaa sitten ohjauksen systeemiseen takaa-ajoon. Ympäröivä maailma on tätä testattua osuutta laajempi: monikerroksisesta navigoinnista on näyttöä, mutta porrastakaa-ajot tarvitsevat vielä erillistä pelitestausta.
Hahmokehitys
Hunter 1 -hahmon AI-avusteinen prototypointi ja kehitys. Hahmo on edelleen työn alla, ja sen esitystapaa sekä gameplay-integraatiota kehitetään yhä.
Äänimaailma ja alkuperäinen soundtrack
Sävelsin pelin alkuperäisen soundtrackin.
Toteutin myös reagoivia äänijärjestelmiä, jotka mukautuvat vihollisen tilaan ja gameplayhin. Musiikki vaihtuu tutkimisen, vaaran, takaa-ajon ja kuoleman välillä. Pinnan ja liikkumistavan huomioivat askeleet sekä ovien äänet yhdistävät pelaajan toiminnan vihollisen kuuloon.
Systeeminen vihollis-AI
H1 Hunter on oma C++-vihollinen, joka käyttää Unrealin AI Perceptionia ja StateTreetä. Ohjain vastaa päätöksenteosta ja hahmo liikkumisesta sekä fyysisistä toiminnoista. Erillinen tietokomponentti käsittelee havainnot, tunnistuksen, muistin ja etsintätiedot. Toimintatehtävät lukevat tätä komponenttia piilossa olevan pelaajan reaaliaikaisen tilan sijaan.
Omat C++-tehtävät ja ehdot muodostavat StateTreen, joka generoidaan ja käännetään koodista. Näin toimintarakenne on toistettavissa ja tiedon hankinta pysyy erillään päätöksenteosta sekä ympäristöön vaikuttamisesta.
Hunterin arkkitehtuuri
- HavainnointiNäkö, ääni ja taskulampun vihjeet; näköyhteys tarkistetaan joka ruudulla.
- Tieto ja muistiTunnistusmittari, varmennetut sijainnit, valppaustaso ja etsinnän tiedot.
- Tilan valintaStateTree valitsee korkeimman prioriteetin kelvollisen toiminnan.
- ToimintaOmat C++-tehtävät tutkivat, jahtaavat, etsivät ja partioivat.
- Ympäristön toiminnotNavigointi, lukitsemattomat ovet, kiinniotto ja pelitapahtumat.
Kuulo huomioi reitin, ei vain etäisyyttä
Ääntä arvioidaan kokonaisen kuljettavan NavMesh-reitin pituuden perusteella. Äänen voimakkuus vaikuttaa hyväksyttyyn kantamaan. Lähellä oleva lähde seinän takana tai toisessa kerroksessa voi siksi kuulua Hunterille heikosti, jos kulkureitti on pitkä. Kyseessä on reittigeometriaan perustuva pelimekaniikka, ei fysikaalinen akustiikkasimulaatio.
Vaimea ääni saa Hunterin pysähtymään, kääntymään ääntä kohti ja kuuntelemaan. Selkeä ääni tai lyhyen ajan sisällä ensimmäisen vahvistava toinen vaimea ääni luo tutkittavan sijainnin. Pelaajan liikkumistapa vaikuttaa askelten äänenvoimakkuuteen, ja ovet ilmoittavat omat äänensä.
Asteittainen näköhavainto
Tunnistus kertyy mittariin sen sijaan, että näkyvyys olisi pelkkä kyllä–ei-kytkin. Kertymisnopeuteen vaikuttavat etäisyys, katselukulma, liikkumistapa tai asento, liike ja taskulamppu. Mittari laskee näköyhteyden puuttuessa; hyvin läheltä tunnistus tapahtuu heti. Epäily voi käynnistää tutkimisen ennen kuin varmennettu kohde johtaa takaa-ajoon.
Taskulamppu helpottaa näkemistä, mutta lisää paljastumisen riskiä: se vaikuttaa näkökantamaan ja tunnistukseen, ja näkyvä valokeila tai valaistu kohta voi muodostaa vihjeen. Debug-näkymä näyttää näön osatekijät, jotta toimintaa voi tarkastaa ja säätää.
Muisti ilman seinien läpi näkemistä
Vihollinen etsii viimeksi havaitsemansa tiedon perusteella sen sijaan, että seuraisi piilossa olevan pelaajan reaaliaikaista sijaintia. Kun näköyhteys katkeaa, viimeinen varmennettu sijainti ja liikesuunta säilyvät. Tuore ääni voi ylläpitää takaa-ajoa tai korvata vanhemman etsintätiedon. Kohteen menettäminen käynnistää etsinnän viimeksi havaitusta paikasta.
Etsinnän alku painottuu pelaajan viimeaikaiseen kulkusuuntaan. Etsintäsäde laajenee, käytyjä paikkoja vältetään ja ehdotettujen reittien on pysyttävä alueen sisällä. Etsinnän jälkeen AlertRoam partioi katoamisalueella, kunnes valppaus laskee.
Toiminta valitaan prioriteetin mukaan
StateTree valitsee ensimmäisen kelvollisen tilan tässä prioriteettijärjestyksessä. Valinta tehdään uudelleen tiedon muuttuessa tai tehtävän päättyessä. Tilat kilpailevat valinnasta; ne eivät ole peräkkäisiä pelivaiheita. Kiinniotolla ja tainnutuksella on myös tapahtumapohjaiset ohitukset. Valppaustaso on erillinen tietokomponentin arvo.
StateTree / korkein kelvollinen prioriteetti ensin
- CaptureKiinniotto on aktiivinen. Tila jatkuu, kunnes kuoleman käsittely lataa kentän uudelleen.
- StunnedTainnutus on aktiivinen; toipuminen käynnistää etsinnän.Tuki vain debug-laukaisulle; pelin sisäistä tainnutuslähdettä ei ole vahvistettu.
- ChaseVarmennettu kohde on olemassa. Tuore havaittu ääni voi ohjata takaa-ajoa ilman näköyhteyttä.
- InvestigateEpäilyttävällä näköhavainnolla, selvällä tai vahvistetulla äänellä tai valovihjeellä on sijainti.
- SearchKohde on kadonnut; etsintä käyttää säilytettyä tietoa.
- ListenVaimealla äänellä on sijainti, mutta havaintoa ei ole vielä vahvistettu.
- AlertRoamHunter on edelleen valppaana ilman kohdetta.
- RoamPartiointi, kun mikään korkeamman prioriteetin ehto ei täyty.
Pelaaja, ympäristö ja Hunter
AI toimii osana pelattavaa ympäristöä. Uuden kohtaamisen lyhyellä ryntäyksellä on palautumisaika. Kiinniotto edellyttää ulottuvuutta, varmennettua näköyhteyttä ja lyhyttä kuljettavaa reittiä. Alue ja takaa-ajon etäisyysraja rajoittavat toimintaa. Hunter avaa reitillään suljetut lukitsemattomat ovet ja kunnioittaa lukkoja.
Toisiinsa kytkeytyvät pelijärjestelmät
- Pelaajan liikkuminenHiipiminen, kyykistyminen ja juoksu vaikuttavat näkyvyyteen ja ääneen. Rajallinen paniikkisprintti tukee pakenemista.
- Interaktiot ja ovetUudelleenkäytettävä katseeseen perustuva rajapinta ja yhteinen oviluokka palvelevat pelaajaa, AI:ta ja kohtaamisia.
- Havaintojen syötteetPinnan ja liikkumistavan huomioivat askeleet, ovien äänet ja taskulamppu välittävät tietoa Hunterille.
- Haavat ja uusi yritysHaavat paranevat vaiheittain, ja mallissa on kriittinen tila. Kiinniotto ja kuolema johtavat uuteen yritykseen.
- Reagoiva ääniMusiikki vaihtuu tutkimisen, vaaran, takaa-ajon ja kuoleman välillä Hunterin tilanteen mukaan.
Tekninen työ ja iterointi
Vaiheittainen kehitys käyttää Gitiä, Git LFS:ää ja One File Per Actor -rakennetta. Uudelleenkäytettävät komponentit erottavat havainnoinnin, hahmon toiminnot, interaktiot, haavat ja äänen. AI:n säätöarvot ovat pelin aikana luettavassa data-assetissa, joten iterointi ei edellytä vakioiden hajauttamista toimintakoodiin.
- Konsolin testikomennot, visuaaliset merkit ja tilanäkymät näyttävät tunnistuksen, kuulopäätökset, muistetut sijainnit ja etsinnän kohteet.
- Python-työkalut tukevat skriptattuja PIE-regressiotarkistuksia ja vievät kenttägeometrian mittakaavaisiksi pohjapiirroksiksi.
- Suunnittelusäännöt, hyväksymiskriteerit ja pienet kehitysvaiheet pitävät toteutuksen ja katselmoinnin rajattuina.
Prototyypit ja seuraavat vaiheet
Hunterin pienempi naulapyssyprototyyppi käyttää fyysisiä ammuksia, näköyhteyteen sidottua laukaisua, ammusten kiinnittymistä pintoihin ja samanaikaisten ammusten ylärajaa. Tähtäyksen esitys on paikkamerkkitasolla, ja audiovisuaalinen viimeistely on kesken.
Nykyinen pelattava osuus yhdistää pelaajan järjestelmät, systeemisen vihollis-AI:n, ympäristön koostamisen ja reagoivan äänen. Laajempi tarina ja lore ohjaavat projektia, mutta narratiivisen kokonaisuuden toteutus kuuluu tulevaan työhön. Hahmokehitys ja audiovisuaalinen viimeistely jatkuvat gameplayn iteroinnin rinnalla.
Projektista voidaan tarvittaessa esitellä gameplayta, AI-debug-näkymiä ja teknistä toteutusta tarkemmin.
Testaus ja varmennus
- Tallennettuihin kehitysajoihin sisältyy 12/12 läpäistyä skriptattua AI-regressiotestiä 17.9.2026. Tulos on projektin aiempaa näyttöä; Unreal-testejä ei ajettu uudelleen tämän portfoliopäivityksen aikana.
- Skriptatut PIE-tarkistukset käsittelevät havainnointia, takaa-ajoa, muistia ja kiinniottoa. Konsolikomennot, päälle piirretyt tilatiedot ja maailmaan sijoitetut merkit tukevat kohdennettua pelitestausta ja virheenjäljitystä.
Dokumentaation tilanne
Täydennettävä näyttö
- Aitoja peli- ja debug-kuvia suunnitellaan; konseptikuva ei ole pelikuva.
- Julkista peliversio- tai lähdekoodilinkkiä ei ole toimitettu.
Lähdeaineisto
Tämä esittely perustuu seuraavaan projektiaineistoon.
- Projektin C++-järjestelmät, kehitysvaiheiden historia ja tallennetut editorin regressiotestit; tarkastettu 3.10.2026.