Game of Ukkels: Japan Kaiki - ukkopeli
-
- Moderator
- Posts: 227
- Joined: Wed Aug 29, 2007 3:55 pm
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Ohhoh. Niin päheet, etten huomannut locked-kohtaa useammallakaan vilkaisulla
Mietin joskus tuohon line of sightiin tekniikkaa, joka käyttäisi myös objektien raycastia, mutta marssisi seiniä pitkin jompaankumpaan kellonsuuntaan. Silloin ovet eivät jäisi huomaamatta. Se ampuisi säteen aina seuraavaan tilejen väliin, kunnes säteen matkalle tulee jotain muutakin kuin oletettu seinä. Törmäyskohdasta marssimalla tilen reunaan toiseen suuntaan saa kohdan, mihin edellisen seinän näkyvyys päättyy. ja sitten jatketaan taas normaalia marssintaa. Oikeastaan mietin tuota nopeammaksi raycasterin korvaajaksi
Mietin joskus tuohon line of sightiin tekniikkaa, joka käyttäisi myös objektien raycastia, mutta marssisi seiniä pitkin jompaankumpaan kellonsuuntaan. Silloin ovet eivät jäisi huomaamatta. Se ampuisi säteen aina seuraavaan tilejen väliin, kunnes säteen matkalle tulee jotain muutakin kuin oletettu seinä. Törmäyskohdasta marssimalla tilen reunaan toiseen suuntaan saa kohdan, mihin edellisen seinän näkyvyys päättyy. ja sitten jatketaan taas normaalia marssintaa. Oikeastaan mietin tuota nopeammaksi raycasterin korvaajaksi
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Olen pikkuhiljaa jatkanut pelin kehitystä, mutta omituiset bugit ovat hidastaneet työtäni. Lisäsin peliin ovet jotka on toteutettu EditMap-komennolla, mutta jostain syystä vihulaiset alkoivatkin näkemään seinien läpi!
Ilmeisesti kyseessä on CoolBasicin bugi, jossa ObjectSight() palauttaa aina true jos kartan HIT-kerrosta on muokattu samalla framella.
Alla esimerkkikoodi, jossa välilyönnin painaminen aiheuttaa bugin.
Ilmeisesti kyseessä on CoolBasicin bugi, jossa ObjectSight() palauttaa aina true jos kartan HIT-kerrosta on muokattu samalla framella.
Alla esimerkkikoodi, jossa välilyönnin painaminen aiheuttaa bugin.
Code: Select all
SCREEN 800,600
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = loadObject ("Media\guy.bmp",72)
ukko2 = loadObject ("Media\guy.bmp",72)
setupCollision ukko, kartta, 1, 4, 2
setupCollision ukko2, kartta, 1, 4, 2
positionObject ukko2, -200, 200
state = false
repeat
'Ukon ohjaus
If LeftKey() then TurnObject ukko,5
If RightKey() then TurnObject ukko,-5
If UpKey() Then moveObject ukko,2
If DownKey() then moveObject ukko,-2
updateGame
if keyDown(cbkeyspace) then
editMap kartta, 2, 10, 10, state
addText "edit " + state
endif
state = not state
cloneCameraPosition ukko
drawGame
text 0,0,"visible: " + objectSight(ukko, ukko2)
if objectSight(ukko, ukko2) then
drawToWorld ON,ON,ON
line objectX(ukko), objectY(ukko), objectX(ukko2), objectY(ukko2)
drawToWorld OFF,OFF,OFF
endif
drawScreen
Forever
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Ylimääräinen UpdateGame EditMapin ja ObjectSightin välissä tuntuu toimivan workaroundina. Tosin se voi tietysti sitten aiheuttaa muita ongelmia ja vaatia jotain koodin pätkien siirtelyä ympäriinsä.
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Joo toimiihan se. Jouduin tekemään jonon johon framen aikana tehdyt kartan muutokset lisätään, jotka suoritetaan vasta piirtoloopin lopussa.Latexi95 wrote:Ylimääräinen UpdateGame EditMapin ja ObjectSightin välissä tuntuu toimivan workaroundina. Tosin se voi tietysti sitten aiheuttaa muita ongelmia ja vaatia jotain koodin pätkien siirtelyä ympäriinsä.
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Jatkoin näkyvyyskoodin tutkimista. Ei siitä vieläkään hyvä tullut, mutta ainakin pahimmat vilkkumiset korjautuivat.
Kuvaan on merkitty nykyiset ongelmakohdat joissa tilejen kulmat peittyvät tietyistä suunnista katsottuna.
Itse pelissä kartan OVER-kerros piirretään kuitenkin tummennuksen päälle, joten nämä ongelmat eivät välttämättä näytä kovin pahoilta käytännössä. Lisäksi näkyvyysalue on vain tummennettu eikä esim. täysin musta, joten pienet virheet eivät välttämättä pistä silmään.
Kuvaan on merkitty nykyiset ongelmakohdat joissa tilejen kulmat peittyvät tietyistä suunnista katsottuna.
Itse pelissä kartan OVER-kerros piirretään kuitenkin tummennuksen päälle, joten nämä ongelmat eivät välttämättä näytä kovin pahoilta käytännössä. Lisäksi näkyvyysalue on vain tummennettu eikä esim. täysin musta, joten pienet virheet eivät välttämättä pistä silmään.
Code: Select all
// #define TIC __timerstart = timer()
// #define TOC (timer() - __timerstart)
const COORD_X = 0
const COORD_Y = 1
dim mapCornerPositions(0,0,1)
dim mapCorners(0,0)
const CORNER_NW = 0
const CORNER_NE = 1
const CORNER_SE = 2
const CORNER_SW = 3
function find_map_corners(map, tilesize)
mapw = mapWidth()
maph = mapHeight()
mapx = objectX(map)
mapy = objectY(map)
reDim mapCorners(mapw, maph)
reDim mapCornerPositions(mapw, maph, 2)
for ty=1 to maph
for tx=1 to mapw
A = getMap2(2, tx-1, ty-1)
B = getMap2(2, tx , ty-1)
C = getMap2(2, tx-1, ty)
D = getMap2(2, tx , ty)
' the tiles are in the following arrangement:
' A B
' C D
' 0,0 1,0
' 0,1 1,1
corner = true
' X X
' Y Y
if (A = B) and (C = D) then corner = false
' X Y
' X Y
if A = C and B = D then corner = false
ofs_x = 0
ofs_y = 0
amt = 1
' push the corner point away from the tile
if corner then
if A then ofs_x = ofs_x + amt : ofs_y = ofs_y + amt
if B then ofs_x = ofs_x - amt : ofs_y = ofs_y + amt
if C then ofs_x = ofs_x + amt : ofs_y = ofs_y - amt
if D then ofs_x = ofs_x - amt : ofs_y = ofs_y - amt
'ofs_x + 10
endif
sx = ofs_x + (tx-1)*32 - objectSizeX(map)/2.0 + objectX(map)
sy = ofs_y + (ty-1)*32 - objectSizeY(map)/2.0 + objectY(map)
mapCornerPositions(tx, ty, COORD_X) = sx
mapCornerPositions(tx, ty, COORD_Y) = sy
mapCorners(tx, ty) = corner
next tx
next ty
endFunction
const MAX_CORNER_COUNT = 150
'global losCornerCount // done at runtime
dim losCornerAngles(MAX_CORNER_COUNT) as float
'! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
'Aja tämä ohjelma painamalla F5.
'Lopeta ohjelma painamalla ESC.
'! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
SCREEN 640,480
'frameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject ("Media\guy.bmp",72)
'setupCollision ukko, kartta, 1, 4, 2
dummy = makeObject()
objectPickable kartta, ON
translateObject kartta, 16, 0
__timerstart = timer()
find_map_corners(kartta, 32)
setWindow " took " + (timer() - __timerstart) + " ms"
corner_max = 0
draw_triangles = true
repeat
if keyHit(cbKeySpace) then draw_triangles = not draw_triangles
'Ukon ohjaus
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2*2
If DownKey() Then MoveObject ukko,-2*2
updateGame
CloneCameraPosition ukko
drawGame
color 255,255,255
drawToWorld ON,ON,ON
mapw = mapWidth()
maph = mapHeight()
mapx = objectX(kartta)
mapy = objectY(kartta)
map_bound_x = max(0, ((cameraX()-320) - (-objectSizeX(kartta)/2.0 + objectX(kartta)))/32)
map_bound_y = max(0, ((-cameraY()-240) - (-objectSizeY(kartta)/2.0 - objectY(kartta)))/32)
' piirtoa varten ei flipata kameran y:tä, kiitos vaan zerppa
map_bound_y2 = max(0, ((cameraY()+240) - (-objectSizeY(kartta)/2.0 + objectY(kartta)))/32) + 2
map_bound_x_end = min(mapw-1, map_bound_x + roundUp(640/32.0)) + 1 ' +1 is needed to handle rightmost corners
map_bound_y_end = min(maph-1, map_bound_y + roundUp(480/32.0)) + 2
setWindow map_bound_x + ", " + map_bound_y
box map_bound_x, map_bound_y ,10, 10, 1
' static corners
'const MAX_CORNER_COUNT = 150
'dim losCornerAngles(MAX_CORNER_COUNT)
color cbwhite
corner_count = 0
for ty=map_bound_y to map_bound_y_end
for tx=map_bound_x to map_bound_x_end
if mapCorners(tx, ty) then
'sx = (tx)*32 - objectSizeX(kartta)/2.0 + objectX(kartta)
'sy = (ty)*32 - objectSizeY(kartta)/2.0 + objectY(kartta)
sx = mapCornerPositions(tx, ty, COORD_X)
sy = mapCornerPositions(tx, ty, COORD_Y)
ang# = getAngle(objectX(ukko), -objectY(ukko), sx, sy)
losCornerAngles(corner_count) = ang
corner_count = corner_count + 1
box sx-1,-sy+1,3,3,1
if corner_count >= MAX_CORNER_COUNT then
exit
endif
endif
next tx
if corner_count >= MAX_CORNER_COUNT then
exit
endif
next ty
solid = getMap2(2, map_bound_x + 1, map_bound_y + 1)
for y_index = 0 to 1
'ty = (map_bound_y - 4) * (1-y_index) '+ (map_bound_y_end-2) * y_index
ty = (map_bound_y - 1) * (1 - y_index) + (map_bound_y_end-1) * y_index
for tx = map_bound_x to map_bound_x_end
hit = getMap2(2, tx + 1, ty + 1)
if not hit = solid then
' spawn corners here
sx = (tx)*32 - objectSizeX(kartta)/2.0 + objectX(kartta)
sy = (ty)*32 - objectSizeY(kartta)/2.0 + objectY(kartta)
'sy2 = (ty)*32 - objectSizeY(kartta)/2.0 - objectY(kartta)
' if we came from air to solid, move the new point slightly to left etc.
if hit then
sx = sx - 1
else
sx = sx + 1
endif
color 255,0,255
box sx,-sy,6,6,1
ang# = getAngle(objectX(ukko), -objectY(ukko), sx, sy)
losCornerAngles(corner_count) = ang
corner_count = corner_count + 1
endif
solid = hit
next tx
next y_index
' vertical additional corners
solid = getMap2(2, map_bound_x + 1, map_bound_y + 1)
for x_index = 0 to 1
'ty = (map_bound_y - 1) * (1 - y_index) + (map_bound_y_end-1) * y_index
tx = (map_bound_x - 1) * (1 - x_index) + (map_bound_x_end) * x_index
for ty = map_bound_y to map_bound_y_end
hit = getMap2(2, tx + 1, ty + 1)
if not hit = solid then
' spawn corners here
sx = (tx)*32 - objectSizeX(kartta)/2.0 + objectX(kartta)
sy = (ty)*32 - objectSizeY(kartta)/2.0 + objectY(kartta)
'sy2 = (ty)*32 - objectSizeY(kartta)/2.0 - objectY(kartta)
if hit then
'sy = sy - 1
else
'sy = sy + 1
endif
color 255,0,255
box sx,-sy,6,6,1
ang# = getAngle(objectX(ukko), -objectY(ukko), sx, sy)
losCornerAngles(corner_count) = ang
corner_count = corner_count + 1
endif
solid = hit
next ty
next x_index
/*
' dynamic corners
last_hit = -1 'always hit ON first
for x=0 to 20 '640/32
xx = map_bound_x + x
yy = map_bound_y + 1
hit = getMap2(2, xx, yy)
if (last_hit <> hit) or x=20 then
xx=xx-1 'the last tile is the corner
sx = (xx)*32 - objectSizeX(kartta)/2.0 + objectX(kartta)
sy = (map_bound_y2-1)*32 - objectSizeY(kartta)/2.0 + objectY(kartta)
color cbred
box sx, sy+8, 8, 8, 1
last_hit = hit
ang# = getAngle(objectX(ukko), -objectY(ukko), sx, sy)
losCornerAngles(corner_count) = ang
corner_count = corner_count + 1
endif
next x
*/
iters = 0
repeat
sorted = true
for i = 0 to corner_count-1-1
if losCornerAngles(i) > losCornerAngles(i+1) then
temppi# = losCornerAngles(i)
losCornerAngles(i) = losCornerAngles(i+1)
losCornerAngles(i+1) = temppi
sorted = false
iters + 1
endif
next i
until sorted
corner_max = max(corner_count, corner_max)
steps = 30
a# = 360.0/float(steps)
cloneObjectPosition dummy, ukko
ox = objectX(dummy)
oy = objectY(dummy)
px = 0
py = 0
px2 = 0
py2 = 0
lock(SCREEN())
for i = 0 to corner_count
ang# = losCornerAngles(i mod corner_count)
if ang > 179 and ang < 181 then ang = 180
if ang > -1 and ang < 1 then ang = 0
dist# = 9999999.0
rotateObject dummy, ang
objectPick dummy
px = pickedX()
py = pickedY()
' we round the (px , py) coordinate to a multiple of 32 to
' align it with the underlying tile grid so the triangles won't
' cross tiles so often
'px = (px/32)*32
'py = (py/32)*32
if i > 0 then
color 255,255,255
if draw_triangles then drawtri(ox, oy, px, py, px2, py2)
color 0,255,0
line ox, oy, px, py
color 255,255,0
'circle px-4,py-4,16,1
endif
px2 = px
py2 = py
next i
unlock(SCREEN())
drawToWorld OFF,OFF,OFF
color 255,0,0
text 0,0,"FPS: " + FPS()
text 0,12,"corner count: " + corner_count
text 0,12*2,"corner max: " + corner_max
text 0,12*3,"sort iters: " + iters
text 0,12*4,"space: toggle fill"
text 0,12*5,"bounds: " + map_bound_x + ", " + map_bound_y + " -> " + map_bound_x_end + ", " + map_bound_y_end
text 0,12*6,"mouse: " + mouseWX() + ", " + mouseWY()
for i = 0 to corner_count-1
text 200,12*i,i+": " + losCornerAngles(i)
next i
drawScreen
forever
function drawtri(x1,y1,x2,y2,x3,y3) 'by atomimalli
'line x1,y1,x2,y2
'line x2,y2,x3,y3
'line x3,y3,x1,y1
If y2<y1 Then 'jos p2 on ylempänä kuin p1 vaihdetaan niiden paikkaa
tmp=y1
y1=y2
y2=tmp
tmp=x1
x1=x2
x2=tmp
EndIf
If y3<y1 Then 'jos p3 on ylempänä kuin p1 vaihdetaan niiden paikkaa
tmp=y1
y1=y3
y3=tmp
tmp=x1
x1=x3
x3=tmp
endif
if y3<y2 Then 'jos p3 on ylempänä kuin p2 vaihdetaan niiden paikkaa
tmp=y2
y2=y3
y3=tmp
tmp=x2
x2=x3
x3=tmp
endif
'pisteet ovat nyt järjestyksessä
'ylhäältä alas p1(x1,y1), p2(x2,y2), p3(x3,y3)
dy1=y2-y1'pystysuora matka p1:sta p2:seen
dx1=x2-x1'vaakasuora matka p1:sta p2:seen
dy2=y3-y1'pystysuora matka p1:sta p3:meen
dx2=x3-x1'vaakasuora matka p1:sta p3:meen
If dy1 Then 'jos kolmion yläosa on pidempi kuin 0
'käydään läpi kaikki vaakaviivat kolmion yläosassa(p1-p2)
for i = y1 To y2
'lasketaan seuraava x-koordinaatti p1:stä p2:seen
ax=x1+((i-y1)*dx1)/dy1
'lasketaan seuraava x-koordinaatti p1:stä p3:meen
bx=x1+((i-y1)*dx2)/dy2
Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
Next i
endif
dy1=y3-y2'pystysuora matka p2:sta p3:meen
dx1=x3-x2'vaakasuora matka p2:sta p3:meen
If dy1 Then 'jos kolmion alaosa on pidempi kuin 0
'käydään läpi kaikki vaakaviivat kolmion alaosassa(p2-p3)
For i = y2 To y3
'lasketaan seuraava x-koordinaatti p2:stä p3:meen
ax=x2+((i-y2)*dx1)/dy1
'lasketaan seuraava x-koordinaatti p1:stä p3:meen
bx=x1+((i-y1)*dx2)/dy2
Line ax,i,bx,i 'piirretään viiva kolmion reunojen välille
next i
endif
endFunction
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Coolbasic ei muuten käytä moniriviseen kommentointiin " /* " ja " */ " merkkejä, vaan moiseen löytyy kätevät komennot "RemStart" ja "RemEnd"
Muuten tosin vaikutti toimivan ihan mallikaasti.
Muuten tosin vaikutti toimivan ihan mallikaasti.
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Kiitos vastauksesta! Kiva että näitäkin joku vielä lukee.
Ilmeisesti C-tyyliset kommentit ovatkin surkean esikääntäjäni ominaisuus. En meinaa enää muistaa mitä olen itse lisännyt ja mitä en.
Sain vihdoin toteutettua siedettävän näkökentän piirron peliin!
Video: lineofsight.mp4
Säteenheittoon perustuva näkökenttä.
Kartasta esilasketaan kaikki nurkat pelin alussa. Piirron aikana pelaajasta heitetään säteitä kohti parhaillaan ruudulla näkyviä nurkkapisteitä, ja vierekkäisten osumapisteiden ja pelaajan väliin piirretään täytetty kolmio. Käytännössä piirrän siis (255, 0, 255) -värisiä kappaleita tummennettuun karttakuvaan, joka lopuksi piirretään muun pelin päälle.
Vierekkäiset kolmiot yhdistetään suuremmiksi kolmioiksi (punaiset) piirron nopeuttamista varten.
Algoritmissa myös yritetään yhdistää vierekkäisiä kolmioita suuremmiksi jos vain suinkin pystytään, koska funktiokutsut ovat CoolBasicissa aika hitaita. Pääsin myös optimoimaan kolmionpiirtofunktiosta ylimääräiset kerto- ja jakolaskut pois mikä oli oikeastaan ihan mukavaa.
Ensimmäinen prototyyppi oli vielä hieman hidas.
Olisi todella hienoa jos CB tukisi jonkinlaisia objektitiedostoja joita ei käännettäisi uudestaan jos lähdekooditiedostot eivät ole muuttuneet, koska tällä hetkellä projektin kääntämiseen menee yli minuutti. Se on todella turhauttavaa!
Ilmeisesti C-tyyliset kommentit ovatkin surkean esikääntäjäni ominaisuus. En meinaa enää muistaa mitä olen itse lisännyt ja mitä en.
Sain vihdoin toteutettua siedettävän näkökentän piirron peliin!
Video: lineofsight.mp4
Säteenheittoon perustuva näkökenttä.
Kartasta esilasketaan kaikki nurkat pelin alussa. Piirron aikana pelaajasta heitetään säteitä kohti parhaillaan ruudulla näkyviä nurkkapisteitä, ja vierekkäisten osumapisteiden ja pelaajan väliin piirretään täytetty kolmio. Käytännössä piirrän siis (255, 0, 255) -värisiä kappaleita tummennettuun karttakuvaan, joka lopuksi piirretään muun pelin päälle.
Vierekkäiset kolmiot yhdistetään suuremmiksi kolmioiksi (punaiset) piirron nopeuttamista varten.
Algoritmissa myös yritetään yhdistää vierekkäisiä kolmioita suuremmiksi jos vain suinkin pystytään, koska funktiokutsut ovat CoolBasicissa aika hitaita. Pääsin myös optimoimaan kolmionpiirtofunktiosta ylimääräiset kerto- ja jakolaskut pois mikä oli oikeastaan ihan mukavaa.
Ensimmäinen prototyyppi oli vielä hieman hidas.
Olisi todella hienoa jos CB tukisi jonkinlaisia objektitiedostoja joita ei käännettäisi uudestaan jos lähdekooditiedostot eivät ole muuttuneet, koska tällä hetkellä projektin kääntämiseen menee yli minuutti. Se on todella turhauttavaa!
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Vau, mahtavaa ja inspiroivaa! Seurailen tätä aina mielenkiinnolla kun tulee uusia postauksia, vaikken aina kommentoisikaan. Tuo lisäämäsi video pelistä oli todella miellyttävä lisä näihin päivityspostauksiin, siitä sai vielä paremman kuvan tästä näkyvyyshaasteesta kuin pelkistä staattisista kuvankaappauksista
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Game of Ukkels: Japan Kaiki - ukkopeli
UKKOPELI IS BACK
Ajattelin osallistua Assemblyjen pelinkehityskisaan! Olen nyt viime viikot hionut graafista ilmettä, piirrellyt grafiikka ja fiksannut bugeja. Kenttiäkin tein muutaman. En valitettavasti itse pääse assyille mutta onneksi kilpailuihin voi ottaa osaa myös etänä.
Tapahtuman jälkeen suunnitelmissa olisi fiksata pahimmat assyversiossa ilmenneet ongelmat, lisätä juonentynkää ja sitten julkaista ihan kunnolla. Lähinnä siis tehdä jotkut nettisivut ja postata latauslinkki twitteriin.
Kyllä tämä vielä valmistuu!
Edit 28.7.2017:
Pelipaketti lähetetty Assemblyn compocrewille. Eli kohta pääseekin jo pelaamaan
Vielä yksi screenshot:
Last edited by CCE on Fri Jul 28, 2017 3:40 am, edited 1 time in total.
- Zero
- Lead Developer
- Posts: 727
- Joined: Sun Aug 26, 2007 2:30 pm
- Location: Helsinki, Finland
- Contact:
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Thumbs up!
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Peli on nyt listattu Assemblyjen sivuilla!
Suora latauslinkki: japankaiki_80.zip
Otan mielelläni palautetta pelistä vastaan. Jos törmäät Memory Access Violationiin, niin lähetätähän ystävällisesti pelin hakemistoon generoidun loki.txt:n minulle vaikkapa yksityisviestinä.
Suora latauslinkki: japankaiki_80.zip
Otan mielelläni palautetta pelistä vastaan. Jos törmäät Memory Access Violationiin, niin lähetätähän ystävällisesti pelin hakemistoon generoidun loki.txt:n minulle vaikkapa yksityisviestinä.
- Zero
- Lead Developer
- Posts: 727
- Joined: Sun Aug 26, 2007 2:30 pm
- Location: Helsinki, Finland
- Contact:
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Jotenkin tuntuu että assyjen game dev kompon taso laskee vuosi vuodelta; nytkin siellä oli paljon surkeita mobiilipelejä tai nopeasti kasaan kyhättyjä keskeneräisiä Unity-virityksiä.
Game of Ukkelis oli minun mielestäni yksi kompon parhaita pelejä. Selkeitä vaikutteita Hotline Miamista Animoidut menut, animoidut powerupit, musa, efektit - pelin eteen oli selvästi nähty vaivaa. En olisi uskonut CoolBasic-peliksi
Game of Ukkelis oli minun mielestäni yksi kompon parhaita pelejä. Selkeitä vaikutteita Hotline Miamista Animoidut menut, animoidut powerupit, musa, efektit - pelin eteen oli selvästi nähty vaivaa. En olisi uskonut CoolBasic-peliksi
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Loistavat grafiikat, äänet, musiikki ja pelattavuus Pelaamistani Coolbasic-peleistä ehdottomasti parhaimmistoa, ellei jopa paras, sillä harvoin nämä ovat näin viimeisteltyjäCCE wrote: ↑Tue Aug 01, 2017 9:23 am Peli on nyt listattu Assemblyjen sivuilla!
Suora latauslinkki: japankaiki_80.zip
Otan mielelläni palautetta pelistä vastaan. Jos törmäät Memory Access Violationiin, niin lähetätähän ystävällisesti pelin hakemistoon generoidun loki.txt:n minulle vaikkapa yksityisviestinä.
Nyt loppupään kentissä tapellessani huomasin että miten sattuu rutkimalla panokset loppuvat helposti kesken, ja vaikkei tämä olekaan välttämättä huono asia, sikäli kun vaatii hieman enemmän taktikointia ja tarkkuutta, niin saisi pelistä löytyä ihan perinteinen nyrkkikin, kuten mm. vanhassa kunnon TK:ssa, jotta kenttä ei jää muutaman jäljelle jääneen "siviilin" vuoksi läpäisemättä.
Huomasin myös että raketinheittimellä ampuessani yksi siviili lensi kentän ulkopuolelle ja kuoli sinne, mutta jäin miettimään, että onko se varmaa että viholliset kuolevat siihen, ettei paineaalto vain heitä heitä seinän läpi ulkopuolelle ja sitten he jäävät sinne pyörimään puolikuolleina?
Ja viimeisenä, kentässä "Cease and repeat" huomasin, että jos valitsen aseiksi pistoolin ja raketinheittimen, toimii peli tavallista hitaammin, kun taas uzi + raketinheitin-yhdistelmällä peli pyöri sulavasti. Perin mielenkiintoinen bugi En kokeillut että tapahtuuko samaa muissa kentissä/muilla yhdistelmillä.
Joka tapauksessa loistava tekele, jota palaa mielellään pelaamaan useammankin kerran. Pelkistetty TK-meininki toimii ainakin itselläni
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Kiitos kehuista ja testauksesta! Taidanpa laittaa vihulaiset kuolemaan automaattisesti jos niiden huomataan karkaavan kentän ulkopuolelle.
Finaaliversioon koetan myös tasapainottaa kenttiä (lähinnä lisätä enemmän ammuksia) ja piirtää lisäanimaatioita. Alkuperäinen ajatus oli myös saada jotain juonentynkää välinäytöksiin mutta katsoo nyt mitä tulee tehtyä.
Finaaliversioon koetan myös tasapainottaa kenttiä (lähinnä lisätä enemmän ammuksia) ja piirtää lisäanimaatioita. Alkuperäinen ajatus oli myös saada jotain juonentynkää välinäytöksiin mutta katsoo nyt mitä tulee tehtyä.
Re: Game of Ukkels: Japan Kaiki - ukkopeli
Ukkopeli on valmis!
kepuli.com/japankaiki/
Lataus: japankaiki101.zip
Muutokset assyversioon nähden:
Pistän vielä jossain vaiheessa koodit käännösympäristöineen uuteen repoon ilman kaikkea törkyä. Yllätyn jos joku saa sen edes ylipäätään kääntymään.
Edit: Pelillä on nyt myös jostain syystä traileri.
kepuli.com/japankaiki/
Lataus: japankaiki101.zip
Muutokset assyversioon nähden:
- Pari uutta kenttää
- Kuolemisanimaatiot
- Pelin läpäisseelle tarjotaan käyttöön huijauskoodit ja 1HP hardcore mode
- Kaksi kaatumisbugia fiksattu
- Aseet uudelleenbalansoitu. Käytännössä latausajat ovat nyt paljon lyhyemmät.
Pistän vielä jossain vaiheessa koodit käännösympäristöineen uuteen repoon ilman kaikkea törkyä. Yllätyn jos joku saa sen edes ylipäätään kääntymään.
Code: Select all
* Sun Aug 27 21:12:14 2017 (HEAD -> master, tag: v100) audio volume fixes & bump version
* Sun Aug 27 16:53:49 2017 readme tiles
* Sun Aug 27 16:43:12 2017 (origin/master, origin/HEAD) delete test level in build
* Sun Aug 27 16:42:57 2017 wip gfx
* Sun Aug 27 16:42:46 2017 update releasefiles for 0.96
* Sun Aug 27 16:42:10 2017 (tag: v096) cheats
* Sun Aug 27 15:10:33 2017 end sequence & remove crap
* Sat Aug 26 21:38:54 2017 (tag: v095beta) hud fixes & readme additions
* Sat Aug 26 20:38:40 2017 fix reload anim
* Sat Aug 26 20:35:22 2017 a bit better doors
* Sat Aug 26 20:20:56 2017 death anims
* Sat Aug 26 19:04:55 2017 sakuraa
* Sat Aug 26 18:08:55 2017 reload for smg
* Sat Aug 26 18:02:00 2017 menufix
* Sat Aug 26 17:54:26 2017 menu fixes
* Sat Aug 26 17:37:13 2017 remove sequences
* Sat Aug 26 17:29:05 2017 animations and shit
* Wed Aug 23 23:05:59 2017 robocopy build
* Wed Aug 23 22:49:05 2017 fix crash
* Wed Aug 23 19:42:17 2017 rocket sprite
* Sun Aug 20 20:17:48 2017 weapon gfx
* Tue Aug 15 20:25:19 2017 change weapon
* Sat Aug 12 15:16:39 2017 musaa
* Sat Aug 12 14:52:23 2017 fix level loop
* Sat Aug 12 14:39:22 2017 sequence stop audio and fix rpg doors
* Fri Aug 11 01:28:58 2017 'voiceover'
* Fri Aug 11 00:01:05 2017 update stuff
* Wed Aug 9 23:37:07 2017 fix stuff
* Fri Jul 28 03:31:07 2017 (tag: assyversio) assyt
* Fri Jul 28 02:10:02 2017 (tag: v0.80) 'huh
* Fri Jul 28 00:40:16 2017 gfx
* Thu Jul 27 22:53:09 2017 'endings'
* Thu Jul 27 02:39:59 2017 more
* Wed Jul 26 22:50:05 2017 fix everything
* Sun Jul 23 11:53:12 2017 fix see through walls and alert bugs
* Sat Jul 22 20:02:06 2017 add kamaa
* Sat Jul 22 20:01:54 2017 'pelikamaa'
* Sat Jul 22 16:43:10 2017 title anim
* Sat Jul 22 13:21:36 2017 two keys per action
* Sat Jul 22 12:30:42 2017 new tiles
* Sat Jul 22 01:58:09 2017 fix LOS bugs
* Fri Jul 21 19:29:57 2017 update gfx
* Thu Jul 20 00:31:58 2017 jotain
* Wed Jul 19 22:26:13 2017 new gfx
* Wed Jul 19 22:25:04 2017 fix fist reload bug
* Sun Jul 16 14:20:57 2017 jaa
* Sun Jul 16 13:11:04 2017 new anim
* Sat Jul 15 18:00:16 2017 lisaa mappej
* Sat Jul 15 17:18:48 2017 blood puffs
* Sat Jul 15 17:08:20 2017 maps and stuff
* Sat Jul 15 15:30:45 2017 fix custom level index
* Sat Jul 15 15:01:52 2017 update releasefiles and muzzle
* Sat Jul 15 14:26:58 2017 custom level & fix doors
* Mon Apr 24 01:08:18 2017 more greetings
* Thu Dec 22 04:34:26 2016 (newlos) line of sight fixes
* Thu Dec 22 01:02:24 2016 shell sort
* Wed Dec 21 23:43:08 2016 better LOS
* Wed Dec 21 20:27:36 2016 jotain
* Wed Aug 31 12:48:17 2016 tabs to spaces
* Wed Aug 31 12:16:03 2016 add reshacker.exe
* Mon Aug 29 23:21:56 2016 patch reload & edit maps
* Fri Mar 4 01:55:42 2016 add level
* Thu Mar 3 03:12:32 2016 add taunts
* Thu Mar 3 02:26:59 2016 deterministic timer
* Thu Mar 3 02:01:38 2016 proper scaled window mode
* Thu Mar 3 01:35:32 2016 add ammo powerup
* Thu Mar 3 00:31:46 2016 build on desktop
* Thu Mar 3 00:31:28 2016 fix menusystem
* Wed Mar 2 23:49:54 2016 Merge branch 'master' of bitbucket.org:seece/asstroop
|\
| * Thu Dec 31 01:04:32 2015 use CB_IDE_DIR var
| * Thu Dec 31 00:52:19 2015 Merge branch 'master' of bitbucket.org:seece/asstroop
| |\
| * | Thu Dec 31 00:51:56 2015 add env laptop
* | | Wed Mar 2 23:49:36 2016 use pypy
| |/
|/|
* | Fri Oct 23 16:19:52 2015 cosmetic fixes
* | Fri Oct 23 15:35:35 2015 wiggle run for fist guys
* | Thu Oct 22 23:19:46 2015 no debug prints & fuzz size\
* | Thu Oct 22 23:12:15 2015 optimize door updategame
* | Thu Oct 22 23:06:01 2015 update game after door apply
* | Thu Oct 22 23:00:20 2015 door event queue
* | Thu Oct 22 22:40:19 2015 fix door los update
* | Thu Oct 22 22:34:54 2015 try to fix doors
* | Mon Oct 12 03:02:19 2015 dont hear through walls
* | Mon Oct 12 02:53:43 2015 use proper max spot counter limit
* | Mon Oct 12 02:44:53 2015 hardcode guard fov
* | Mon Oct 12 02:42:09 2015 (origin/doors) configurable resolution
* | Mon Oct 12 02:21:26 2015 new sound fx & fix guard visibility on cheat
* | Sun Oct 11 23:04:41 2015 better door sound
* | Sun Oct 11 22:39:10 2015 somewhat workign door sounds
* | Wed Sep 30 01:26:33 2015 enemies open doors again
* | Tue Sep 29 23:50:47 2015 doors debug
* | Sun Sep 13 13:51:58 2015 weapon change sound
* | Sat Sep 12 03:45:55 2015 enemies can walk through doors
* | Sat Sep 12 02:49:52 2015 walk through doors
* | Fri Sep 11 01:22:48 2015 detect door
* | Sun Aug 30 18:28:18 2015 use absolute path in build script and stuff
* | Sun Aug 30 15:47:35 2015 unlock menu
* | Sun Aug 30 01:52:47 2015 nice deny sound
* | Sun Aug 30 01:36:28 2015 more menus
* | Sat Aug 29 18:35:32 2015 new menu sounds
* | Sat Aug 29 18:14:57 2015 cry audio
* | Sat Aug 29 16:38:59 2015 fix caching
* | Sat Aug 29 12:46:42 2015 add rotating pyssys
* | Sat Aug 29 02:09:00 2015 proper menus
* | Tue Aug 25 23:28:26 2015 weapon menu
* | Tue Aug 18 23:22:04 2015 new modes
* | Thu Aug 13 23:52:15 2015 nice cursor
* | Thu Aug 13 23:11:12 2015 hold button in menus
* | Thu Aug 13 23:02:35 2015 maps and menu
* | Thu Aug 13 21:04:34 2015 stuff
* | Tue Aug 11 23:53:54 2015 key config
* | Wed Jun 24 23:41:17 2015 maps and profiler
* | Tue Jun 23 23:20:18 2015 save and load
* | Tue Jun 23 21:39:29 2015 names in level chooser
* | Tue Jun 23 21:24:14 2015 aim and map and vihu movmenets
* | Mon Jun 22 23:35:45 2015 all stuff
* | Thu Jun 18 09:17:38 2015 kekkkonen
* | Mon Jun 15 23:29:17 2015 ending hack
* | Sun Jun 14 13:48:39 2015 sequence tweaks
|/
* Sun Jun 14 11:18:40 2015 smg and level reload
* Sat Jun 13 19:25:48 2015 shotgun sounds
* Sat Jun 13 18:35:03 2015 menusounds
* Sat Jun 13 16:51:29 2015 skulls and stuff
* Wed Jun 3 22:47:51 2015 spinning skulls and whatnot
* Wed Jun 3 20:06:06 2015 add level complete flag
* Mon Jun 1 23:25:50 2015 eyes
* Mon Jun 1 23:17:13 2015 new shotgun sprite
* Sun May 31 19:47:40 2015 new guard
* Sun May 31 17:08:49 2015 new healthbar
* Mon May 25 23:01:05 2015 broken animation
* Mon May 18 19:38:34 2015 briefing images and texts and menus
* Mon May 18 18:36:59 2015 adjustable rotation quality for debugging QMULT
* Mon May 18 18:36:44 2015 object.aup
* Mon May 18 18:36:32 2015 remove debugprint
* Mon May 18 18:36:17 2015 objective audacityrpoject
* Mon May 18 18:35:57 2015 new sounds
* Mon May 18 18:35:45 2015 faster knife movement
* Mon May 18 18:35:32 2015 add run option to build script
* Sun May 17 23:48:49 2015 menusystem
* Sun May 17 20:07:51 2015 game menu
* Sun May 17 19:14:25 2015 menu test
* Sun May 17 18:59:26 2015 blud
* Sun May 17 15:39:39 2015 positional audio
* Sun May 17 15:23:40 2015 saturate tileset
* Sun May 17 15:14:13 2015 more horriblu
* Sun May 17 12:24:58 2015 kauhuäänet
* Sun May 17 11:36:43 2015 pain chance and fist hardening
* Sun May 17 11:25:26 2015 build script
* Tue May 12 20:10:45 2015 random blod pool sizes
* Tue May 12 00:36:45 2015 blood and colors
* Sat May 9 13:08:40 2015 wepon bar color
* Fri May 8 21:42:01 2015 loading bar
* Fri May 8 20:49:29 2015 ai: search for rocket explosion
* Fri May 8 20:37:42 2015 sinko partikles
* Wed May 6 22:09:19 2015 paineaalot
* Wed May 6 21:57:13 2015 cheatcodes
* Wed May 6 21:43:48 2015 make sure release version compiles¨
* Wed May 6 21:43:41 2015 add keys to release config
* Wed May 6 21:34:11 2015 better error checks & fix iteration bugs in effects
* Tue May 5 21:35:17 2015 sikk particle effects
* Tue May 5 20:09:12 2015 rpg reload sound
* Mon May 4 23:35:07 2015 nerf rpg and smg load times
* Sun May 3 17:55:57 2015 rocket blast
* Sun May 3 17:44:27 2015 nice rocket effects
* Sun May 3 15:29:06 2015 savuvana
* Sun May 3 15:10:27 2015 rocket tweaks
* Sun May 3 00:02:05 2015 nice rpg sound
* Sat May 2 23:27:49 2015 first rpg
* Sat May 2 20:10:49 2015 game timer
* Sat May 2 20:07:11 2015 add stun visualisation
* Sat May 2 18:32:00 2015 fix guard peekering
* Sat May 2 18:02:14 2015 enemy visibility tweaks & knife risk
* Fri May 1 20:07:07 2015 move aim by gun offset
* Mon Apr 20 22:44:34 2015 weapons: slower smg bullets, more shotgun kickback
* Mon Apr 20 22:44:11 2015 los test codes
* Mon Apr 20 22:36:09 2015 reload cursor
* Mon Apr 20 22:22:15 2015 changelog
* Mon Apr 20 22:22:01 2015 smg tweaks
* Mon Apr 20 22:21:48 2015 faster backpedaling
* Mon Apr 20 22:17:20 2015 nerf shotgun
* Mon Apr 20 22:09:45 2015 symbolic key names
* Mon Apr 20 21:30:24 2015 increase version
* Mon Apr 20 21:29:13 2015 remove reshacker.ini
* Thu Apr 16 00:09:42 2015 reload only if clip not full & move gui
* Wed Apr 15 23:41:54 2015 slower turn rate
* Wed Apr 15 01:44:14 2015 add change text
* Tue Apr 14 22:11:10 2015 strafebutton
* Tue Apr 14 14:18:34 2015 replay level index
* Tue Apr 14 14:05:07 2015 change keys
* Tue Apr 14 01:26:22 2015 icon build script
* Tue Apr 14 00:56:13 2015 game of ukkels: japan kaiki
* Tue Apr 14 00:45:15 2015 music from NERD
* Tue Apr 14 00:23:50 2015 extra levelit
* Mon Apr 13 23:44:54 2015 long stun time for pistol
* Mon Apr 13 23:36:22 2015 fix menu
* Mon Apr 13 23:09:06 2015 level nerd script
* Mon Apr 13 22:08:48 2015 simple shoot animations
* Mon Apr 13 21:13:59 2015 change name
* Mon Apr 13 11:49:47 2015 locked laser lines
* Mon Apr 13 01:25:27 2015 randomize smokepuffs
* Mon Apr 13 01:20:59 2015 shoot distance
* Mon Apr 13 01:16:58 2015 fancier healthbar
* Mon Apr 13 01:04:01 2015 add healthbar
* Mon Apr 13 00:49:39 2015 fistguy hits
* Fri Mar 13 13:50:23 2015 testiplayerukko
* Fri Mar 13 00:21:58 2015 guard random walk
* Thu Mar 12 23:52:23 2015 fix guards not finding spot position
* Thu Mar 12 23:16:09 2015 guard view fuzzing
* Thu Mar 12 09:48:33 2015 show tiles no LOS
* Thu Mar 12 03:01:50 2015 retry fix
* Thu Mar 12 02:48:25 2015 better recoil
* Thu Mar 12 02:34:00 2015 go to death spot
* Thu Mar 12 02:16:31 2015 weapon tweaks
* Thu Mar 12 00:07:16 2015 (origin/feature-replay) console scripts
* Wed Mar 11 00:14:35 2015 fancy concosle and cvars
* Tue Mar 10 03:47:01 2015 fist guard ukkel
* Tue Mar 10 03:31:27 2015 tweak profiler
* Tue Mar 10 03:03:44 2015 reorganize code to functions
* Tue Mar 10 02:41:53 2015 use 22khz sampling rate
* Tue Mar 10 02:41:33 2015 gitattrs
* Tue Mar 10 02:40:59 2015 delete
* Tue Mar 10 02:37:14 2015 proper gitattributes
* Tue Mar 10 02:13:59 2015 key config and stuff
* Tue Mar 10 02:02:41 2015 use global macros when loading assets
* Tue Mar 10 01:34:33 2015 use fields with guard velocity
* Tue Mar 10 01:29:21 2015 last stood as fields
* Tue Mar 10 01:10:54 2015 last spot just as fields
* Tue Mar 10 01:03:39 2015 paranoid debugging
* Tue Mar 10 00:07:29 2015 bette re raply
* Mon Mar 9 23:59:35 2015 zero type indices only in delete functions
* Mon Mar 9 23:22:23 2015 better replay metadata
* Mon Mar 9 21:14:26 2015 replay metadata
* Sat Mar 7 17:56:30 2015 keystuffs
* Sat Mar 7 17:21:45 2015 debugstuffs
* Sat Mar 7 16:56:17 2015 fug
* Sat Mar 7 14:22:50 2015 fucking replay
* Sat Mar 7 04:14:22 2015 add replay prototype
* Sat Mar 7 00:43:53 2015 default config
* Sat Mar 7 00:27:14 2015 use keyconf keys
* Fri Mar 6 12:59:16 2015 CRAZY debug paranoia
* Fri Mar 6 03:03:56 2015 paranoid checs
* Tue Mar 3 20:41:23 2015 add guard name
* Mon Mar 2 02:59:36 2015 noise and hearing
* Mon Mar 2 02:29:47 2015 voice channels
* Mon Mar 2 02:19:13 2015 markers and stuff
* Sun Mar 1 22:15:24 2015 shotguni
* Sun Mar 1 21:47:42 2015 knife slash and death anim
* Sun Mar 1 20:59:50 2015 reset weapons
* Sun Mar 1 20:56:17 2015 transitions
* Sun Mar 1 20:20:28 2015 game end text
* Sun Mar 1 20:08:08 2015 slower guards
* Sun Mar 1 18:32:15 2015 stupid animations
* Sun Mar 1 16:30:42 2015 fonttisekoilu
* Sun Mar 1 14:59:51 2015 build script
* Sat Feb 28 20:46:07 2015 fix tileset metal shading & better random bullet distribution
* Fri Feb 27 03:20:33 2015 shotgun and alert anim
* Fri Feb 27 03:14:01 2015 ai and knife tweaks
* Fri Feb 27 03:08:42 2015 shotgun guy
* Fri Feb 27 02:32:02 2015 fix ai kulmajumitus
* Fri Feb 27 00:41:22 2015 try to fix guards not shooting from corners
* Fri Feb 27 00:12:41 2015 guard reload
* Thu Feb 26 22:05:23 2015 better knife and nice tiles
* Thu Feb 26 02:02:29 2015 nice graphicsä
* Thu Feb 26 01:33:54 2015 draw over layer on top of background in shade renderer
* Thu Feb 26 00:40:42 2015 add nice config system and try animation
* Wed Feb 25 21:54:01 2015 shaded tileset updater
* Tue Feb 24 20:01:55 2015 blood
* Tue Feb 24 16:40:29 2015 tweak knife
* Tue Feb 24 16:38:22 2015 better LOS
* Tue Feb 24 02:31:15 2015 risers
* Tue Feb 24 01:51:09 2015 balance tweaks
* Tue Feb 24 01:36:16 2015 new gun sound
* Tue Feb 24 00:58:10 2015 knife
* Mon Feb 23 23:42:50 2015 placeholder logo
* Mon Feb 23 23:37:31 2015 clouds
* Mon Feb 23 23:16:23 2015 weapon push back
* Mon Feb 23 23:06:26 2015 startmusic volume
* Sat Feb 21 14:59:08 2015 knifesmack
* Sat Feb 21 14:42:20 2015 nice sounds
* Sat Feb 21 04:34:52 2015 sliding bodies
* Sat Feb 21 04:22:49 2015 add shotgun
* Sat Feb 21 01:04:24 2015 transition effect & hide aim when complete
* Fri Feb 20 02:24:30 2015 enemies dont see 360 degress when alarmed
* Thu Feb 19 14:28:37 2015 config path
* Thu Feb 19 04:59:05 2015 music switch and propagandaposter
* Thu Feb 19 04:45:14 2015 broken tracker music impl
* Thu Feb 19 02:53:56 2015 reload and empty sounds
* Tue Feb 17 04:29:30 2015 add weapon arrays
* Tue Feb 17 03:52:29 2015 weapon picker
* Tue Feb 17 03:20:43 2015 opening sequence and build script
* Tue Feb 17 03:05:07 2015 proper sequencer test
* Tue Feb 17 01:51:01 2015 useless sequencer
* Sat Feb 14 14:40:18 2015 lopetustekstit
* Sat Feb 14 03:33:35 2015 add memorial plates
* Sat Feb 14 02:43:20 2015 turn enemies to kyyhkynens when targets are dead
* Sat Feb 14 01:16:36 2015 player and guards have velocity
* Sat Feb 14 00:23:57 2015 fix LODSD
* Fri Feb 13 23:38:22 2015 darkening LODS
* Fri Feb 13 23:03:01 2015 crappy dither los
* Fri Feb 13 22:29:08 2015 movement tweaks for guards
* Fri Feb 13 22:09:18 2015 avoid wals also when visible
* Fri Feb 13 21:59:43 2015 show visible counter in debug stuff
* Fri Feb 13 21:59:00 2015 dither test & guard visibility hax
* Fri Feb 13 21:40:55 2015 hard line of sight
* Fri Feb 13 20:46:37 2015 tileset shader
* Fri Feb 13 02:06:28 2015 alert anim
* Fri Feb 13 01:37:18 2015 give up and idle if no enemy is found
* Fri Feb 13 01:21:55 2015 kiantely
* Fri Feb 13 00:19:19 2015 tweak wall avoidance
* Fri Feb 13 00:09:11 2015 wall avoidance
* Thu Feb 12 23:37:10 2015 target collision and guard spot counter
* Thu Feb 12 23:02:37 2015 new sounds & alerted guards see behind them
* Thu Feb 12 18:12:48 2015 target movement and sounds
* Wed Feb 11 22:08:23 2015 sounds and guard movement
* Wed Feb 11 20:05:18 2015 profiler and debug text overhaul
* Wed Feb 11 17:58:05 2015 unfinished profiler
* Wed Feb 11 17:30:15 2015 fix target count
* Wed Feb 11 01:44:46 2015 better test level
* Wed Feb 11 01:11:09 2015 multiple targets
* Wed Feb 11 00:45:57 2015 two step aiming
* Wed Feb 11 00:20:44 2015 add bodies
* Tue Feb 10 23:59:51 2015 aim
* Tue Feb 10 03:07:28 2015 enemy AI
* Tue Feb 10 02:42:50 2015 movement tweaks
* Tue Feb 10 02:28:56 2015 enemy bullet damage & player death
* Tue Feb 10 01:43:22 2015 target
* Mon Feb 9 02:07:09 2015 kill enemies
* Sun Feb 8 19:31:43 2015 better bullet tilemap collision
* Sat Feb 7 18:46:15 2015 add shootage
* Sat Feb 7 16:59:54 2015 add debug picking
* Sat Feb 7 16:29:55 2015 more collision
* Sat Feb 7 15:50:10 2015 collision
* Sat Feb 7 02:06:30 2015 make_guard and enemy start positions
* Fri Feb 6 01:55:44 2015 mav when choosing level2
* Fri Feb 6 01:46:59 2015 add exit
* Fri Feb 6 01:40:59 2015 movement
* Fri Feb 6 00:33:39 2015 logging
* Thu Feb 5 13:49:40 2015 initial commit