Page 3 of 3

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Mon Aug 31, 2015 4:30 am
by atomimalli
Ohhoh. Niin päheet, etten huomannut locked-kohtaa useammallakaan vilkaisulla :o

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 :P

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Mon Nov 02, 2015 10:33 pm
by CCE
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.

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

Posted: Mon Nov 02, 2015 11:21 pm
by Latexi95
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

Posted: Thu Nov 05, 2015 2:18 am
by CCE
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ä.
Joo toimiihan se. Jouduin tekemään jonon johon framen aikana tehdyt kartan muutokset lisätään, jotka suoritetaan vasta piirtoloopin lopussa.

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Fri Dec 02, 2016 11:21 pm
by CCE
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.

Image

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

Posted: Fri Dec 16, 2016 1:00 pm
by MrMonday
Coolbasic ei muuten käytä moniriviseen kommentointiin " /* " ja " */ " merkkejä, vaan moiseen löytyy kätevät komennot "RemStart" ja "RemEnd" :D

Muuten tosin vaikutti toimivan ihan mallikaasti.

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Thu Dec 22, 2016 4:32 am
by CCE
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

Image
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.

Image
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.

Image
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

Posted: Fri Dec 23, 2016 10:19 am
by valscion
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 :)

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Sat Jul 22, 2017 10:59 pm
by CCE
Image

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:
Image

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Sun Jul 23, 2017 3:33 pm
by Zero
Thumbs up!

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Tue Aug 01, 2017 9:23 am
by CCE
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ä.

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Thu Aug 03, 2017 9:43 pm
by Zero
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 :D

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Tue Aug 08, 2017 5:00 pm
by MrMonday
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ä.
Loistavat grafiikat, äänet, musiikki ja pelattavuus :D Pelaamistani Coolbasic-peleistä ehdottomasti parhaimmistoa, ellei jopa paras, sillä harvoin nämä ovat näin viimeisteltyjä :)

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 :D 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 :D

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Tue Aug 08, 2017 7:13 pm
by CCE
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ä. :roll:

Re: Game of Ukkels: Japan Kaiki - ukkopeli

Posted: Sun Aug 27, 2017 9:18 pm
by CCE
Ukkopeli on valmis!

Image
Image

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.
Tässä oli kyllä aivan tolkuttomasti tekemistä. Alla on päivätty committiloki pelin kehityksestä, josta ehkä välittyy se kuinka kauan pieniinkin asioihin voi kuluttaa aikaa. Täytyy myös sanoa etten voi suositella CoolBasicilla ohjelmointia tämän jälkeen enää kenellekään. :lol:

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
Edit: Pelillä on nyt myös jostain syystä traileri.