Log In  


... in a cold, dark forest.

Keep the fire burning, stay warm, and don't get lost.
How long can you survive against the wilds?

Cart #48048 | 2018-01-10 | Code ▽ | Embed ▽ | No License
37

ABOUT
I made this over the first week of 2018 for the Winter Break Jam held by Worcester Polytechnic Institute's Game Development Club. The theme for the jam was just the phrase "very warm."

All assets and code are my own work.

And if you want to see more of my stuff, check out my Twitter: @Jusiv_

CONTROLS

  • Arrows: Move
  • Z/X/C: Start Game

(Walk into something to interact with it.)

CHANGELOG

  • Initial Release - 1/7/2018
  • v2 - 1/10/2018
    (I say Version 2, but I really just tweaked how shadows and fairy circles are drawn. Nothing major was changed.)

You can also find this game on itch.io: https://jusiv.itch.io/a-very-warm-fire

37


Reminds me of Don't Starve, but even less forgiving. Didn't think that was possible :D
Great atmosphere btw :)


This is amazing. I wonder if you could help me out a little bit, too?

How did you manage to get objects lower than the player on the y axis to appear in front of him? I've been looking at your code for an hour and I can't figure it out. I think there's a lot going on here that's lost on me.

Anyway, if not that's cool too. Great work, really.


Thanks so much!

And yeah, let me see if I can explain it. I don't think I used the most efficient method, but it works for the purpose well enough. (Also apologies if this is a bit lengthy.)

The key bit of code is this, from the _draw function:

actors = {}
for i=0,191 do
local l = {}
add(actors,l)
end
foreach(a_log,add_actor)
...
foreach(a_spark,add_actor)
add_player()
add_campfire()
for i=1,192 do
local l = actors[i]
foreach(l,draw_actor)
end

The first part of this sets actors to a list of 192 empty lists. Each of these corresponds to a specific y-coordinate of the world (the exact range of coordinates they relate to depends on the player coordinates). Think of these as buckets, each corresponding to a horizontal, 1-pixel tall "slice" of the screen.

Once I have this list of empty buckets, I tell all of my actors to run the add_actor function. This places them into the appropriate bucket if they are "on-screen" (within a certain boundary around the player). If they aren't on-screen, they don't do anything.

Now that all of the objects which should be visible on-screen are placed in buckets, I iterate through each bucket and tell all actors stored in it to run the draw_actor function. This simply checks what type of actor they are (based on an ID value I gave them) and tells them to run the appropriate draw function.

Because of the order I run through the buckets, the objects with lower y-coordinates (ones that are higher-up on the screen) are drawn first, and thus appear behind ones with higher y-coordinates.

So yeah, that's how I did it. Hope that helps!

EDIT: I've also added in better comments to that code section in the most current version of the game.


@Jusiv Thank you very much for doing that. The Pico-8 community is so cool, it's really good to see that people are still inspired to make fun and unique experiences. I was kinda scared that I missed the boat.

Thank you, again.


2

Very neat idea. I kind of wish the innermost circle of light from the fire would be inaccessible to the monsters and creatures. Nice color palette.


Found this while sploring and came here to say I loved it! My best score is 558 but I'm not sure I totally understand what I can do, I didn't interact with anything other than picking up points (apples?) and running from monsters.

Really really great assets, you've done a lot with a little.


@DrakeGraves
You're welcome! And yeah I'm still relatively new-ish here myself (I released my first PICO-8 game ~7 months ago), but judging by the amount of PICO-8 activity (particularly on Twitter) I don't think this place will be going quiet anytime soon.

@gray_idol
Thanks! While I did consider making monsters avoid the fire, I ultimately decided that I liked the fact you had to stay on your toes even while resting.

@relsqui
Those are logs you're collecting, though you're not the first one to assume they're apples actually. :/
(I can't really see how they look like apples, personally. Way too wide.)

You have to deposit them in the fire to refuel it.

You can also regain small amounts of health and score bonus points by using fairy circles (if you can find them), but only 5 spawn per game and they each give you a permanent negative effect.


Woo, 755!

Oh, yeah, now that you say that I totally see how they're logs -- and that makes it way more clear what I'm meant to do with them, hehe.

The way my brain parses it as an apple, if you're wondering, is by reading the round light part (the log cross-section) as the "shine" on a half-buried and maybe implausibly shiny (metallic?) apple.

At any rate I still really like this one, it makes me want to try making something more survival-y.


The visual arts and music are exceptional!


Shame you can't set the monsters on fire. They keep jumping through the flame.


@Scotaire Hey, thank you! I can't claim to know anything about making music, but good to hear that what I managed to come up with worked.

@dw817 Well yeah realistically they would at least avoid it, but I decided I wanted to prioritize putting the player at risk. I deliberately gave the player no foolproof defense against the creatures, and being able to just wait in safety while the fire dwindles wouldn't very exciting.


1

Great game, really nice work!



[Please log in to post a comment]