Log In  
Follow
Nedim
[ :: Read More :: ]

I want to make my own raycaster game in picotron and I have been following this blog written for a pico-8 raycaster. I get an error when I run this and I am not sure what I should do to fix this issue. Help would be much appreciated.

Other than the code, all I did is make a sprite in slot 1 and draw a simple map in the map editor.

function _init()
    cam={
        x=12,
        y=12,
        a=0,
        w2d=2
    }
    scrx=0
end

function _update()
    controls()
end

function _draw()
    cls()
    map(0,0,0,0,16,16)
    circ(cam.x,cam.y,2,12)
    --for scrx=0,480 do
    --  raycast(cam,scrx)
    --end
    raycast(cam,240)
end

function controls()
    if btn(0) then
        cam.a+=0.01
    end
    if btn(1) then
        cam.a-=0.01
    end
    if btn(2) then
        cam.x+=cos(cam.a)*0.5
        cam.y+=sin(cam.a)*0.5
    end
    if btn(3) then
        cam.x+=cos(cam.a)*-0.25
        cam.y*=sin(cam.a)*-0.25
    end
end

function raycast(cam,scrx)
    local rayvx,rayvy=
        cam.vx-cam.vy*cam.w2d*(scrx-64)/128,
        cam.vy+cam.vx*cam.w2d*(scrx-64)/128

    -- distance traveled
    local dist=0
    -- current coordinates
    local x,y=cam.x,cam.y
    -- map cel coordinate and value
    local celx,cely=x8,y8
    local cel=mget(celx,cely)
    -- direction of ray
    local dirx,diry=
        sgn(rayvx),sgn(rayvy)

    -- distances across map cel
    local dist4x,dist4y=
        abs(8/rayvx),
        abs(8/rayvy)

    -- distances to next map cel
    local dx,dy=
        abs(4+4*dirx-x%8),
        abs(4+4*diry-y%8)
    local dist2x,dist2y=
        abs(dx/rayvx),
        abs(dy/rayvy)

    -- which direction / angle
    -- the wall was hit from
    local hita=0

    -- perform dda
    repeat

        if dist2x=64
end
P#147975 2024-05-06 08:53

[ :: Read More :: ]

I am trying to make a top down RPG in Picotron and I want to use a combination of mget() and fget() to make collision. I understand that fget is a bit weird in Picotron but mget is also acting strange as it only reads the sprite numbers of 4 sprites in a 2x2 formation on the 0,0 corner of my map.

Is anyone else experiencing this or could this just be me being silly?

P#145489 2024-04-02 15:53

[ :: Read More :: ]

I wrote a function that shows the mouse coordinates and sprite number of the map tile you are hovering over. I originally wrote this for myself to make checking the tiles on my map easier but figured I could share it in case anyone else finds it useful.

function debug_mouse()
    local mx,my = mouse()
    local x_offset=5
    local y_offset=5

    --window width and height
    local w=480
    local h=270

    --offset if box leaves screen
    if mx>w-20 then x_offset=-15 end
    if my>h-29 then y_offset=-24 end

    --draw debug text box
    rectfill(mx+x_offset-1,my+y_offset-1,mx+x_offset+14,my+y_offset+23,1)
    print(mx,mx+x_offset,my+y_offset,8)
    print(my,mx+x_offset,my+y_offset+8,9)
    print(mget(mx,my),mx+x_offset,my+y_offset+8*2,10)
end
P#145485 2024-04-02 15:44