One shot - Head shot
One shot - Head shot
Tämän pelin koodaamisen aloitin viimme kesänä kunnolla, mutta sehän jäätyi syksyllä uhoamisesta huolimatta.
Menneenä keväänä muistelin, kuinka kivaa oli tätä koodatessa, joten päätinpä koodata koko systeemin uudelleen.
Grafiikoita olen parannellut.
Tarinan päähenkilön vaihdoin kuvitteelliseen Eero Lehtoseen, joka on Suojelu Poliisi. Tarinaa ei kannata ottaa tosissaan, vaikka sen pitäisi olla todenmukainen, sillä se ihan pakolla laittaa virneen naamalle.
Tarina itse:
----
En sitten tiedä sopiiko tuo juonen pätkä pelin ulkoasuun, mutta sovelletaan.
Pelimekaniikasta: Pelistä olen yrittänyt saada täysin Dynaamisen ja muokattavan. Peliin tulee erinlaisia Editoreita, joilla voi muokata tehtäviä aseita, räjähdyksiä jne.
Dynaamisen hahmojen -ja aseiden hallinnan myötä ehkä teen Nettipeli ominaisuudet, kunhan saan pelimoottorin kunnolla kasaan.
Pelimoottorilla saan laitettua jo kartan ja tilesetin, waypointtejä, sekä hahmoja.
Kommentteja ja ehdotuksia saa jo antaa.
Uutta kuvaa:
PS. Jouduin vähän muokkailemaan viestiä, aina jäi jotain tärkeää sanomatta.
HUOM! Alla on vanhempi versio pelistä, uutta versiota pelistä saattekin vielä odottaa.
Menneenä keväänä muistelin, kuinka kivaa oli tätä koodatessa, joten päätinpä koodata koko systeemin uudelleen.
Grafiikoita olen parannellut.
Tarinan päähenkilön vaihdoin kuvitteelliseen Eero Lehtoseen, joka on Suojelu Poliisi. Tarinaa ei kannata ottaa tosissaan, vaikka sen pitäisi olla todenmukainen, sillä se ihan pakolla laittaa virneen naamalle.
Tarina itse:
----
En sitten tiedä sopiiko tuo juonen pätkä pelin ulkoasuun, mutta sovelletaan.
Pelimekaniikasta: Pelistä olen yrittänyt saada täysin Dynaamisen ja muokattavan. Peliin tulee erinlaisia Editoreita, joilla voi muokata tehtäviä aseita, räjähdyksiä jne.
Dynaamisen hahmojen -ja aseiden hallinnan myötä ehkä teen Nettipeli ominaisuudet, kunhan saan pelimoottorin kunnolla kasaan.
Pelimoottorilla saan laitettua jo kartan ja tilesetin, waypointtejä, sekä hahmoja.
Kommentteja ja ehdotuksia saa jo antaa.
Uutta kuvaa:
PS. Jouduin vähän muokkailemaan viestiä, aina jäi jotain tärkeää sanomatta.
HUOM! Alla on vanhempi versio pelistä, uutta versiota pelistä saattekin vielä odottaa.
- Attachments
-
- One Shot - Head Shot.rar
- (3.42 MiB) Downloaded 714 times
Last edited by MaGetzUb on Sun Feb 27, 2011 6:01 pm, edited 11 times in total.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: One shot - Head shot.
Hienoltahan tuo näyttää.... Grafiikat on mielestäni tosi hienot ja, radar, ai että...
Toivottavasti ei jäädy kokonaan. Onnea projektille!
Toivottavasti ei jäädy kokonaan. Onnea projektille!
Re: One shot - Head shot.
Ei tämä projekti menee kyllä läpitse, mutta on pari ongelmaa, yritin tehdä ase pickuppeja typeillä ja pistää niitä kartalle niin se ei ees kopioiunt asetta. Ja eikä siirtänyt sitä. Saman se teki ovien kanssa. Radarista otin tuon valo homman pois se tuntui vievän niin paljon tehoja... Tilesettiin on lisättyjä tekstuureja. Mutta kakikki muut grafiikat on 100% itse tehtyjä... Aseissa oli kova homma piirtää niitä.. Peli moottorin kanssa on paljon tekemistä, hioa tekoälyä, aseita, ääniä + ää pistää lisää. Kaikki muut 13 asetta paitsi kranaatinheitin on valmiita... Tehtävä moottoria pitää hioa. Räjähteet pitää tehdä..
Et on siinä vielä pikkuisen yhdelle ihmiselle tekemistä.. Ase droppi moottori toimii, mutta se ei pistä aseita paikoilleen (eikä näytä niitä )...
Et on siinä vielä pikkuisen yhdelle ihmiselle tekemistä.. Ase droppi moottori toimii, mutta se ei pistä aseita paikoilleen (eikä näytä niitä )...
EDIT:
Tänään yritän saada räjähteet valmiiksi, mutta en tiedä nyt sitten, en lupaa mitään.
Last edited by MaGetzUb on Sat Aug 23, 2008 3:50 pm, edited 1 time in total.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: One shot - Head shot.
Wau! Todella hienot grafiikat! Älä vaan anna näin hienon pelin jäätyä. Ja muuten yks terroristiryhmä joka on venäläinen niin semmonen ku Phoenix Connexion. Neuvostoliiton aikaan perustettu, joka viettää hiljaiseloa nykyäänkin.
Bajaxo Productions -CoolBasic games from year 2008!
Re: One shot - Head shot.
En nyt viitsi pistää aitoja terroristiliittoja, voi tulla rakkaudella rajan takaa terveisiä.
EDIT:
Pelissä on jo yli 2000 riviä koodia, joten eiköhän, moottori tule valmiiksi tämän syksyn aikana..
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: One shot - Head shot.
Jos tämän lopetat niin... Ismo tulee kotiisi!
Kivat grafiikat!
Jatka!
Kivat grafiikat!
Jatka!
*Poistunut foorumilta*
Re: One shot - Head shot.
Meinaa vähän tossa mennä miinus asteitten puolelle, kun en ole saanut minkäänlaista apua pathfinderin luomiseen.. 100 x
Solar Eclipse
We're in a simulation, and God is trying to debug us.
-
- Advanced Member
- Posts: 349
- Joined: Mon Aug 27, 2007 9:00 pm
- Location: Lapinjärvi, Finland
- Contact:
Re: One shot - Head shot.
No, voisit ehkä käyttää A* reitinetsintä algoritmia, vaikka varmasti optimaalisempiakin löytyy. Tässäpä esimerkki koodi ko. algoritmista. Reitinetsintäsysteemi on tehty tämän pohjalta.
Esimerkissä hiiren vasemalla ja oikealla näppäimellä asetetaan alku ja loppupiste ja enteristä lasketaan reitti. Välilyönti arpoo alku ja loppupisteet satunaisesti, jolloin ne saattavat mennä seinän sisään ja näin ollen reittiä ei arvotuilla pisteillä usein löydy.
Niin ja kameraa voi tosiaan liikutella nuolinäppäimistä.
Esimerkissä hiiren vasemalla ja oikealla näppäimellä asetetaan alku ja loppupiste ja enteristä lasketaan reitti. Välilyönti arpoo alku ja loppupisteet satunaisesti, jolloin ne saattavat mennä seinän sisään ja näin ollen reittiä ei arvotuilla pisteillä usein löydy.
Code: Select all
SCREEN 800,600
Global DestinationX, DestinationY, arraywidth, arrayheight
Dim array(arraywidth,arrayheight)
Type openlist
Field x
Field y
Field px
Field py
Field g //distance from start
Field h //estimation, manhattan style
Field f
End Type
Type closedlist
Field x
Field y
Field px
Field py
Field g
Field h
Field f
End Type
SetWindow "A* algorithm with help of http://www.policyalmanac.org/games/aStarTutorial.htm"
map=LoadMap("Media\cdm2.til","Media\tileset.bmp")
LoadRouteMap(map)
alku:
startx=Rand(2,arraywidth-1)
starty=Rand(2,arrayheight-1)
endx=Rand(2,arraywidth-1)
endy=Rand(2,arrayheight-1)
DrawToWorld ON
Repeat
TranslateCamera (-LeftKey()+RightKey())*3,(UpKey()-DownKey())*3
If MouseHit(1) Then startx=World_to_map(1,MouseWX(),map) : starty=World_to_map(2,MouseWY(),map)
If MouseHit(2) Then endx=World_to_map(1,MouseWX(),map) : endy= World_to_map(2,MouseWY(),map)
If KeyHit(cbkeyreturn) Then route$=CalculateRoute(startx,starty,endx,endy,1)
DrawGame
Color cbwhite
Text 20,30,startx
Text 20,45,starty
Text 20,60,endx
Text 20,75,endy
Box (startx)*32-32-(MapWidth()*32)/2,-starty*32 +(MapHeight()*32)/2 +32,32,32,0
Box (endx)*32-32-(MapWidth()*32)/2,-endy*32 +(MapHeight()*32)/2 +32,32,32,0
For i=0 To CountWords(route$," ")
Color cbmagenta
word$=GetWord(route$,i," ")
x=int(GetWord(word$,1,","))-1
y=int(GetWord(word$,2,","))
If GetWord(route$,1)<>"Error." Then Circle x*32-(MapWidth()*32)/2+16,-y*32 +((MapHeight()*32)/2)-16 +32,8,1
Next i
Text 10,10,route$
DrawScreen
If KeyHit(cbkeyspace) Then Goto alku
Forever
//Ehkä hyödyllinen funktio mikäli reitinetsintää käyttää tilekartoissa
Function LoadRouteMap(_map)
arraywidth=MapWidth()
arrayheight=MapHeight()
ClearArray ON
ReDim array(arraywidth,arrayheight)
ClearArray OFF
For x=0 To arraywidth
For y=0 To arrayheight
array(x,y)=GetMap2(2,x,y)
Next y
Next x
End Function
//Reitinetsintään pakolliset funktiot
Function OpenToClosed(_id,_diagon)
o.openlist=ConvertToType(_id)
tempclosed=0
For x=Max(o\x-1,0) To Min(o\x+1,arraywidth)
For y=Max(o\y-1,0) To Min(o\y+1,arrayheight)
If x<>o\x Or y<>o\y Then
prevent=0
For oo.openlist=Each openlist
If oo\x=x And oo\y=y Then
'If oo\g
prevent=1
EndIf
Next oo
For cc.closedlist=Each closedlist
If cc\x=x And cc\y=y Then prevent=1
Next cc
If Not prevent Then
If x<>o\x And y<>o\y Then
If _diagon=True Then AddOpenlist(x,y,o\g+Distance(x,y,o\x,o\y)*10,o\x,o\y)
Else
AddOpenlist(x,y,o\g+10,o\x,o\y)
EndIf
EndIf
EndIf
Next y
Next x
c.closedlist=New(Closedlist)
c\x=o\x
c\y=o\y
c\px=o\px
c\py=o\py
c\g=o\g
c\h=o\h
c\f=o\f
Delete o
Return ConvertToInteger(c)
End Function
Function AddOpenlist(_x,_y,_g,_px,_py)
If array(_x,_y)=0 Then
o.openlist=New(openlist)
o\x=_x
o\y=_y
o\h=(Abs(_x-destinationX)+Abs(_y-destinationy))*10
o\g=_g
o\f=o\g+o\h
o\px=_px
o\py=_py
Return ConvertToInteger(o)
End If
End Function
Function CalculateRoute(_x,_y,_dx,_dy,_diagon=0)
AddOpenlist(_x,_y,0,_x,_y)
destinationX=_dx
DestinationY=_dy
finished=0
If _x=_dx And _y=_dy Then finished=1 : temp$="Error. Start and End are the same."
Repeat
minf=-1
minfid=0
For o.openlist=Each openlist
o\f=o\g+o\h
If minf=-1 Xor minf>o\g Then minfid=ConvertToInteger(o) : minf=o\g
Next o
If minfid<>0 Then
OpenToClosed(minfid,_diagon)
Else
finished=1
temp$= "Error. There isn't route available."
EndIf
If Not finished
For c.closedlist=Each closedlist
If c\x=destinationX And c\y=DestinationY Then
temp$=destinationX+","+DestinationY+" "
vx=c\px
vy=c\py
nextone:
temp$=temp$+vx+","+vy+" "
If vx<>_x Or vy<>_y Then
For cc.closedlist=Each closedlist
If cc\x=vx And cc\y=vy Then
vx=cc\px
vy=cc\py
Goto nextone
EndIf
Next cc
Else
temp$=Left(temp$,Len(temp$)-1)
finished=1
EndIf
EndIf
Next c
EndIf
Until finished
For o.openlist=Each openlist
Delete o
Next o
For c.closedlist=Each closedlist
Delete c
Next c
destinationX=0
destinationy=0
If finished=1 Then Return temp$
End Function
//esimerkkiä varten tarvittava funktio
Function World_to_map(kumpi,arvo,map)//x=1 y=2,karttamuuttuja
tilew=Int(ObjectSizeX(map)/MapWidth())
tileh=Int(ObjectSizeY(map)/MapHeight())
Select kumpi
Case 1
wx=arvo
palautus=Int((wx+(MapWidth()*tilew)/2)/tilew)+1
If palautus>(MapWidth()) Then palautus=(MapWidth())
Case 2
wy=arvo
palautus=Int((-wy+(MapHeight()*tileh)/2)/tileh)+1
If palautus>(MapHeight()) Then palautus=(MapHeight())
End Select
If palautus<1 Then palautus=1
Return palautus
End Function
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Runoblogi, vuodatusta ja sekoiluja.
Re: One shot - Head shot.
Tosi hienolta näyttää kun taas oma pelini ei kovin hyvältä näytä Se onkin vasta tekovaiheessa eikä piirtäminen suju. Juonesi on tosi hieno jos sen osaa toteuttaa.
Re: One shot - Head shot.
Kiitos, Tuosta voi ollakkin todella paljon hyötyä. Mutta sevain tossa AStar algoritmissa häiritsee, että kun on seinä, se ei kierrä sitä, vaan hyppää tavallaan yhden alas ja yhden sivulle, eikä yhden alas ja sitten sivulle... Ja on vähän hidas myös, Mutta pelissäni viholliset vain tarkistavat 1000pikselin etäisyydellä 'äänet' eli, jos ampuu 1000pikselin etäisyydellä niin vihu käy tarkistamassa niistä ukon koordinaateista, ja sitten menee takaisin sinne, missä se oli ennemmin. Ai niin, jos vihu seuraa ukkoa ja sitten vihu kadottaa ukon, niin pitäisikö vihun mennä takaisin vanhaansa vartiointi paikkaan? Siinä voisi tulla hidastus, kun kone selvittää ensin liikkumis waypointtien sioittelun..
Last edited by MaGetzUb on Mon Aug 18, 2008 5:25 pm, edited 1 time in total.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: One shot - Head shot.
Öh, A* etsii lyhimmän reitin kohteeseen, se siis kiertää kaikki esteet tehokkaimmalla mahdollisella tavalla. Mistä hyppäämisestä oikein puhut?
Re: One shot - Head shot.
Kun pelissä pistetään waypointit, ja sen jälkeen liikutetaan ukkoa, niin voipi ukko jäädä seinään kiinni, jossei ukko ole sopivan suuri.
Tässä kuva selventää asiaa:
Tässä kuva selventää asiaa:
- Attachments
-
- nettiin.jpg (121.95 KiB) Viewed 12998 times
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: One shot - Head shot.
Niin, koska tuo tuntuisi laskevan kulmittain liikkumisen mukaan, eikö? Kulmittain liikkumisesta saattaa olla haittaa tilekartoissa, ainakin joissakin, sillä ahtaat kolot tosiaan jumittavat hahmoja. Toisaalta palikkamaisempi liikkuminen olisi epäaitoa. Mikä siis neuvoksi?
EDIT:
Keksinpäs yhden idean, entä jos navigaatiojärjestelmää muokkaisi niin, että datakerroksen tietyt numerot muuttaisivat niihin sijoitettua waypointtia niin, että matka siitä viereiseen ruutuunkin olisi jo 10 yksikköä, jolloin navigaatiojärjestelmä välttelisi paikkoja, joihin hahmo jumittaa.
Re: One shot - Head shot.
Ihan vain vinkkinä: jos tekoälyäijä kävelee aina kartalla siten, että se etsii reitin ilman, että se menee seinän sisään, tarvitseeko tekoälyäijää silloin laittaa reagoimaan seinien kanssa?
Toisin sanoen, voinet ottaa SetupCollisionit vihujen ja kartan väliltä pois, jolloin ne eivät jumitu kulmiin.
A* on melko tehokas algoritmi sitä paitsi.
Toisin sanoen, voinet ottaa SetupCollisionit vihujen ja kartan väliltä pois, jolloin ne eivät jumitu kulmiin.
A* on melko tehokas algoritmi sitä paitsi.
Re: One shot - Head shot.
Tuo olikin ihan hyvä vinkkinä. Kiitos, pistetäänpä muistiin.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
-
- Advanced Member
- Posts: 349
- Joined: Mon Aug 27, 2007 9:00 pm
- Location: Lapinjärvi, Finland
- Contact:
Re: One shot - Head shot.
Niin no taisin unohtaa mainita että tein tuohon valinnaiseksi asetukseksi myös tuon "neliöliikkumisen", eli ei tee reittiä kulmittain. Jos funktion viides parametri _diagon on 1 niin menee myös kulmittain, jos 0 niin menee vain välittömästi viereisiin ruutuihin.programmer of DSG wrote:Kun pelissä pistetään waypointit, ja sen jälkeen liikutetaan ukkoa, niin voipi ukko jäädä seinään kiinni, jossei ukko ole sopivan suuri.
Tässä kuva selventää asiaa:
Ja sitten sellainen vinkki että jos huomaa laskevansa samoja (tai lähes samoja) reittejä uudelleen ja uudelleen niin on kenties tehokkaampaa tehdä jo etsityistä reiteistä taulukko tai vastaava ja katsoa josko reitti on jo etsitty. Ja jos tarvitaan vain hieman erilainen reitti kuin mitä on jo etsitty niin voipi olla tehokkaampaa etsiä reitti sen lähellä olevan tallennetun reitin alkupisteeseen ja loppupisteestä haluttuun pisteeseen. Nämä hommat on vähän ongelmallisia kun on niin monia käyttötarkoituksia, mutta tosiaan kannattaa miettiä kuinka usein reittiä oikeasti tarvitaan etsiä ja voisiko niitä tarvittavia reittejä etsiä ennen pelin alkua muistiin.
Varmaankin myös tuossa reitinetsintä funktiossa on paljon vielä optimoitavaa. Ja sen voisi pistää palauttamaan muistipalan merkkijonon sijaan.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Runoblogi, vuodatusta ja sekoiluja.
Re: One shot - Head shot. ALPHAA TARJOLLA!
Joo, eli nyt olis Aplha tullu ulos. Itse peli on suoraan sanottuna aika p*ska, koska siinä ei voi muutakuin tappaa vihollisia, pistää hälyytyksen päälle.
Pelissä on niin paljon bugeja, että toivoisin että kerrotte kaikki bugit. Ei sellaisia jotka liittyy vihuihin ja aseisiin. Mutta testakkaapa ja sanokaa mitä olette miältä. No eipä tässä tän kummempaa.
Pelissä on niin paljon bugeja, että toivoisin että kerrotte kaikki bugit. Ei sellaisia jotka liittyy vihuihin ja aseisiin. Mutta testakkaapa ja sanokaa mitä olette miältä. No eipä tässä tän kummempaa.
EDIT:
Kommentteja saa tulla tuutin täydeltä.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
- kaneli2000
- Guru
- Posts: 1059
- Joined: Mon Mar 17, 2008 2:40 pm
- Location: Lempäälä
Re: One shot - Head shot. ALPHAA TARJOLLA!
Oujee, aika siisti! (mutta h*ton vaikea (tosin itse en tuommoista voi väittää, kun kaikki ovat moittineent Second Primen toista tasoa ^^))
Pelin fps on ehkä hiukan hidas, mutta onhan se loppujen lopuksi CoolBasicilla tehty, tai sitten olet vain tehnyt ukot hitaiksi, tai koneeni on jotenkin rikki (toivottavasti ei ).
En ala arvostella enempää, kahdestakin syystä:
a) ei jaksa ennen kuin olet tehnyt menut ja kenttiä lisää ja vaikeustasoa alemmaksi (=elkkua lisää)
b) ei vaan jaksa ^^
Sanotaanko että CB asteikolla 8 ½.
Pelin fps on ehkä hiukan hidas, mutta onhan se loppujen lopuksi CoolBasicilla tehty, tai sitten olet vain tehnyt ukot hitaiksi, tai koneeni on jotenkin rikki (toivottavasti ei ).
En ala arvostella enempää, kahdestakin syystä:
a) ei jaksa ennen kuin olet tehnyt menut ja kenttiä lisää ja vaikeustasoa alemmaksi (=elkkua lisää)
b) ei vaan jaksa ^^
Sanotaanko että CB asteikolla 8 ½.
I see the rainbow rising
Re: One shot - Head shot. ALPHAA TARJOLLA!
Niin kuten tossa ennemminkin mainitsin että peli on vielä kovan työn alla. Valikko on 5:ttä vaille valmis. Kenttiä ei ole muuta kuin tua 1 vasta. Tehtävä sysyteemin on pakko saada toimimaan. Viholliset on turhan vaikeita, mutta tämän pitäisi olla vähän taktinen, eikä mikään Medal of honor, jossa rätkitään sinne sun tänne konsulla ja käyrään suorittamassa tehtäviä. Kenttiä on tulossa, ja lisää räjähteitä. Ase systeemi toimii muuten, mutta kun otat esim pistoolin tilalle aseen, se pistooli ei vaihdu tilalle. Eli hiottavaa on niin paljon etten uskalla oiken ajankohtaa määritellä. Yhden hengen projuhan tämä on.
Last edited by MaGetzUb on Mon Aug 25, 2008 9:07 pm, edited 1 time in total.
Solar Eclipse
We're in a simulation, and God is trying to debug us.