Log In  


Cart #26039 | 2016-07-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
49

I did a spaceshooter and documented the process in 16 gifs.

See an overview of all 16 gifs at once. And start each gif as a step by step tutorial.

49


Nice, makes me think I'm over complicating things :-).


1

Wow, this really was pretty cool! :D
Thanks for sharing, this is sure to help me (not only me) to learn more.

If you do not mind I joined the gifs in a video.
https://dl.dropboxusercontent.com/u/127041/ztiromoritz-spaceshooter-16gifs.mp4

Thanks again
(Sorry for the English and Hello from Brazil!)


This is a really cool way of providing a tutorial actually. Thanks for sharing!


Thank you all.

@erloncabral : This is cool. What would you like to do with it? We could add it to the page. Also feel free to use it under (CC BY-NC-SA 4.0) conditions.


ztiromoritz : Hi, I actually joined the gifs just to give pause in some parts, totally for personal use, it might be useful for some more, and put the link here :)


This was really helpful for me. As a pico-8/lua/gamedev noob, I decided to hand copy the code from the gifs, looking up stuff in the pico-8.txt doc as I went along. I learned a bunch, thanks!

I love how the overlay for each gif is each of the colors in the pico-8 palette.


1

Loving this, incredibly helpful, cool format. Did anyone else get a runtime error <EOF> "attempt to index local 's' (a nil value)" after doing collision 3? It references the 's' in the abs_box, coll, and _update functions. Having a hard time finding my mistake.


Really helpful, thanks! It would be nice if you could constrain the ship to the screen -- just unconventional to navigate outside the play field.


1

This is some quick and dirty code to restrict ship to screen area

if btn(0) then if ship.x==0 then ship.x=128 else ship.x-=1 end end
if btn(1) then if ship.x==128 then ship.x=0 else ship.x+=1 end end
if btn(2) then if ship.y==0 then ship.y=0 else ship.y-=1 end end
if btn(3) then if ship.y==120 then ship.y=120 else ship.y+=1 end end

Thanks for sharing, I learned a lot with your tutorial !


@coureurdesmers
quick tricks:

--wrap around
if btn(0) then ship.x=(ship.x+127)%128 end
if btn(1) then ship.x=(ship.x+1)%128 end
more generally, ship.x=(ship.x+128+dx)%128

--walls
if btn(0) then ship.x=max(0,ship.x-1) end
if btn(1) then ship.x=min(ship.x+1,127) end --(127 for a pixel, 120 for a simple sprite)
more generally ship.x=mid(0,ship.x+dx,127)

Thanks @ultrabrite, I've already put this into use


Thanks for the inspiration!

https://www.lexaloffle.com/bbs/?tid=28402


I wanted to thank ztiromoritz for this marvelous tutorial.

Another thing: whatever you write, ultrabrite, should be written in stone!

Pure awesomeness.


thanks ltpitt, but that would be harder to edit (there was 128 instead of 127 (or 120) in the snippet above) ^_^


I've been following this tutorial to try and refresh myself with coding and managed to get code in there to make the ship 'tilt' on turns and the stars go to warp between areas. Feels good.


here's my go at it.. I want to make the enemies a little more interesting... but for now it feels pretty good.

http://codyloyd.com/spacebattle/


2

@codyloyd: Love the changes, And that soundtrack has chops. <3

The shot spread was a nice touch too, As was the star warp effect.

Posting what I got so far from my own tinkering with it here:

Cart #44388 | 2017-09-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Still lots to do from cleaning up my collision routines onwards but I'm just happy I found the single missing letter that had my collision routines not working as intended. (The joys of late night programming.. X.x)

I like my energy bar. It was originally going to count from 1 to 100 but I ended up going with 1-10.


UPDATE!

Cart #44553 | 2017-09-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

Working on it a bit more on its own thread in the WIP section, But it's playable as the demo was so far.. Very basic.


1

It prints out an error while i was doing collision 3
"attempt to index local 's' (a nil value)", Any ideas why?
TIA!


1

I got the error message "attempt to index local 's' (a nil value)". The message points to abs_box function and coll function, but I implemented these functions exactly as in the tutorial. Could someone give some help?


Hi guys!
First of all, @ztiromoriz, thanks for your amazing tutorial.
I finished my game based on it. Please, see below

https://www.lexaloffle.com/bbs/?tid=31761


Is this tutorial completed already?


This is a great, really helpful tutorial, I learned a lot from it. Whilst stylish, I'm not really sure 16 GIFs that you can't pause or rewind is really the best way of demonstrating code though. It'd be great to just have it set out in a more traditional format.


@extar It's published under a CC license. Nothing is stopping you from laying the same content out in a more traditional format and publishing your version.



Thank you for this!


How do you increase the enemies that spawn? I'm talking about the game made with the tutorial. I'm trying to make a difficulty progression but I can't identify which variable or line of code controls how many enemies spawn. All I need is the variable or line of code that controls the enemies spawn and what I need to change to increase the enemy spawn.


I think it’s this one: https://github.com/ztiromoritz/pico-8-shooter/blob/master/p8/tut_16.p8#L34

I searched for 'enemies' and found this 'respawn' function.


Hi!

I followed the gifs and found that I learned a lot from them. Especially the collision system seems like a very neat and rigid way of doing things. I added a small function for drawing the collision boxes as well that helped me visualise some of the syntax errors I was having.

One thing that I did find annoying was the lack of scrubbing on gifs. Sometimes I needed to see a part for a bit longer and it was annoying to have to wait for the whole gif to repeat. I ended up downloading all fo the gifs when I was halfway through and making an mp4 out of them all stitched together for the ease of use.

Thank you so much tho! I really appriciate this :)


Yo, thanks for the tutorial. It still works even on more recent versions of Pico-8. <3



[Please log in to post a comment]