Log In  

Cart #31693 | 2016-10-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

Work in progress of an 8bit remake of the binding of isaac, a game I hold dear to my heart. This is the first time I've developed any kind of game, so it's a rough first release.

-- Started to work on randomly generated floor tiles via the map() command. Rough look into what it may end up being like. Not even close to making a mini-map yet, or creating doors. I also started writing Diptera Sonata, the main in-game song. Download the cart and you can listen. Left the older version up for comparison v.03 and v.04

--TODO

  • Create logic to make a bomb explode
  • Learn how to create a randomly generated floor (map)
  • Make better music
  • Maybe add more enemies + sfx
  • Add a "game over" screen properly
  • Depending on scope, maybe add actual items, a key part to the Binding of Isaac
  • Deal with tear dmg modifier, how to modify it, and update the sprite+dmg accordingly

--COMPLETED

  • Fiddle with firing mechanism to make it less buggy and not use btnp() - 10/20/2016
  • Implemented both P1 and P2 controllers to actually play like Isaac does. This allows me to add in more controls, though this may get finicky with actual use. However this was a big milestone for myself. I understand this won't play well on handhelds, but this was meant for PC only. - 10/23/2016
  • Added menu item to swap controls for people who play the with the keys swapped. - 10/23/2016
P#31360 2016-10-20 23:21 ( Edited 2019-01-17 19:16)

Great start!

Save a few tokens with

elist={}
elist[1]={
    name="bat",
    sprite=192,
    sprites={l=192, r=193, u=194},
    hp=1,
    speed=1,
    movecount=10,
    id=1,
    spawn=07,
    value=1,
    hitbox={x=1, y=1},
    dmg=1
}

collision observation:

The pickups have hitboxes, but only collide with the player's origin. (must tiptoe directly on them) Just a distance check is one way to make collision more forgiving.

tear logic:

Maybe have movement keys set dx or dy for any future tears, then you can check the tear button once/separately to clean that up a little. (makes diagonal possible if you want)

To avoid tear hose without btnp: set a timer when you fire a tear, then "timer=max(0, timer-1)" every frame and only fire tears when timer<1.

P#31371 2016-10-21 02:44 ( Edited 2016-10-21 06:49)

Hi, thanks for the tips! I figured I was doing things in ways that weren't optimal but wanted to get some kind of working prototype before fixing it up. Will definitely take this stuff into account. Appreciate it very much!

P#31414 2016-10-21 19:09 ( Edited 2016-10-21 23:09)
:: dw817

YAZG, SP. You might be interested in this video for ideas:

https://youtu.be/-u5ySFquQNQ?t=210

P#31425 2016-10-21 21:06 ( Edited 2016-10-22 01:07)

Oh man! I was hoping someone would tackle BoI at some point. Excited to see you continue working on this.

P#31577 2016-10-23 17:22 ( Edited 2016-10-23 21:22)

Thanks dw817, I'll take a look.

I was also surprised there hasn't actually been any attempt at an 8-bit version of Isaac, even though Tyrone has teased some screenshots of something. Probably mockups.

I'm open to ideas on how to handle certain things that could work in the pico8 platform, but can't promise I'll personally be able to implement them until I learn more. The limited controls hinder some things, but that's the fun part of this right :)

P#31622 2016-10-23 22:02 ( Edited 2016-10-24 02:02)
:: dw817

I'm not laughing with joy about the WIDE selection of controls either, SP. Still, people, including me, have made a few innovative programs to get the most out f it.

If you really want the low down, yes, all you really have standard is up, down, left, right, (O), and (X). That's your basic 6.

To be clever you can add to check for (O) and (X) simultaneously.
Tap (O).
Tap (X).
Hold (O) (default).
Hold (X) (default).
Hold (O) and Up, Down, Left, or Right.
Hold (X) and Up, Down, Left, or Right.
hold (O) and (X) and Up, Down, Left, or Right.

So really you have 21 forms of input if you push your code to the edge for responsiveness.

P#31632 2016-10-23 22:54 ( Edited 2016-10-24 02:55)

Going twin-stick via the 2nd player dpad is so totally the way to go. It immediately feels more like, yesssss, let's DO this.

I'd say if you're sort of casting around figuring out (a) PICO 8 and (b) putting together a game structure:

  • aim to sort of dabble in each bit of it a little bit (figure out basic map drawing with a static map, figure out basic collision, figure out a super stupid enemy ai for wandering around that map, etc) instead of trying to drill down too deep on any given feature. Better to get e.g. three enemy types working to prove to yourself that your code supports an arbitrary number of enemy types and then moving on to the next bit, vs. spending a bunch of extra time implementing a dozen enemy types without really adding new plumbing to the game and risking feeling burnt out when it's time to move on to the next feature.

  • expect to need to back up and tear some stuff out later as you figure out what works and what doesn't. I'm terrible about this but it's super helpful and important; it's way too easy to get sort of overcommitted early to whatever hacky implementation you came up with originally for one feature or another and then just stew in misery about it being not really workable but something you're married to anyway. So keep reminding yourself that you're doing a rough draft, that everything is expendable and you can always rewrite something better having learned this or that lesson.

  • ask questions and brainstorm as much as you like; there's a bunch of people here who like chattering about the details of how this or that could work and so on.
P#31634 2016-10-23 23:00 ( Edited 2016-10-24 03:02)

Thanks again for the feedback. It definitely helps. I've probably written most of it twice over at this point. I come from a Python background so I'm used to doing this already. With the addition of the p2 controls I can definitely flesh out more ideas I've had, which I'm excited about. I still don't know if everything will get included, but definitely have some leeway with what I can/can't do. My next big hurdle is understanding the "map" and seeing if I'll be able to create floors and things like this.

There are currently 3 enemies I have made, all with the same basic AI, though I tried to make it smart enough that only 1 function was needed to make them move differently. (You'll see each move toward you at different speeds). I've been selective in enemies I've added since a lot of them are just reskins in the actual games. Trying to just add enemies that would diversify the game itself. Leeches/crawling enemies that don't follow the same movement patterns I believe I'll tackle next.

Still unsure about how to handle actual item upgrades, but still working through ideas on which/how to handle it. Same with cards/pills. I just don't want start implementing something and then potentially run out of room, though I haven't even started optimizing anything for that issue yet. Cross that road when I get to it.

P#31671 2016-10-24 15:49 ( Edited 2016-10-24 19:49)
:: dw817

SP, could you make a 3rd type of controller please ?

One where arrow keys move you. Holding down the (O) button, however, stops the player. During this held down button mode, the player can use the arrow keys and fire off in those directions.

Letting go of (O) lets the player freely move again with the arrow keys.

Just the way it's done in Atari Berzerk.

P#31673 2016-10-24 16:00 ( Edited 2016-10-24 20:00)

That would seem to counter what I'm attempting to do, which is recreate Isaac in an 8bit format. The idea behind it being a twin-stick shooter. If I get some down time possibly but this would be very low on the list. Creating a style of play for a different game isn't the intent here.

P#31675 2016-10-24 16:11 ( Edited 2016-10-24 20:11)
:: dw817

As you like, SP. I just know that's a popular format for many topview shooting games, not just Berzerk. I'm working on some stuff right now, if I get some down time possibly, I'll make it for you. :)

P#31679 2016-10-24 16:47 ( Edited 2016-10-24 20:47)

Well, the control seems fine. I didn't escape the boundaries. One thing about enemy movement:

Since the player can fire in cardinal directions, it would make more sense for enemies to attempt to first line up diagonally with the player and then run into them from that angle. Of course, enemies with shooting patterns would do what they do.

Another thing, if you're trying to be especially Isaacy; I'd make the head a seperate (non-colliding) sprite of it's own, and then layer an expression on top of it.

PS: dw; I'm sure it wouldn't be hard to edit that kind of thing in, but if this IS going to have all of the Issac functionality - which I'm hoping for too, I might add! - it'll take the full set of both controllers. D-pad move, D-pad shoot, space item, Q for cards/pills, a bomb key, and a drop key.

Also, you would LOVE Voxatron, because that's kind of the entire premise of that. 8 way move, hold shoot to shoot in that direction and strafe, and a button to jump. Which might be scriptable to other things, like bombs.

P#35026 2017-01-05 19:48 ( Edited 2017-01-06 00:55)

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2019-12-13 09:52 | 0.029s | 2097k | Q:56