“Shelter Creek” is a cozy puzzle-platformer made with love2d and the fennel programming language. I made this game as my submission to the Spring Lisp Game Jam 2023.
Curious mushroom varieties grow in the solitary forest of “Shelter Creek.” Never has anyone in history seen and documented all those mushrooms until now.
You are a researcher - an explorer - stepping into Shelter Creek, surrounded by all its wilderness. Your wisdom and your bravery are all you need. There is only one goal. Find all the mushrooms.
- Install
love
on your system’s path
$ make run
$ make release
Absolutely no code is done. I know I want to do a platformer for the game jam since I’ve never made one before, but I struggled to figure out how to make an interesting platformer. Ended up spending the whole time doodling and brainstorming the ideas. Eventually settled on the idea of making a platformer to find and collect mushrooms hidden in the forest.
Making some concept arts on my sketch book and Aseprite. No a single line of code either.
Edit <2023-06-02 Fri>: Settled on this amazing color palette - Tangerine Noir for the game.
Turning concept arts into sprites in Aseprite. First time using Tiled map editor to piece together sprites into the first game map.
One of my personal goals in this game jam is to code as little as possible. (And as dirty as possible. More on this point later.) Instead of my minimalist approaches in my last two game jams where I coded almost everything necessary from scratch, I’m using:
- karai17/Simple-Tiled-Implementation to load and draw the map
- kikito/bump.lua to handle the collision
- vrld/hump’s camera module for handling the camera movement
- kikito/anim8 for render animated sprites
Gotta say the progress is quite significant. I think I can sleep well with that.
I ended up tweaking the camera movement for too long but eventually roll back to the simplest because I couldn’t get rid off a weird jittering problem on the player character. Hope I can improve the camera movement in the future.
More coding today! I coded up naive implementations to:
- Showing guidance
- Displaying the Shroomdex
- Collecting mushrooms
- Entering portal
The day ended with a mojar bug that prevents reloading the same map.
Yesterday’s bug was due to not clearing the collidable player object before loading the new map, with a new player spawning point. Also spent some time tweaking to the layouts and increase the window size for aesthetic.
Then I started working on the second map and found that I needed to implement some ad-hoc spawning logic. There are 5 maps planned for this game and I felt falling behind the schedule. Hopefully I’d cut some scope and submit the game on time. With so many things I was tring for the first time (plus for personal reason that I need to submit the game earlier than the deadline), I kept feeling the time pressure.
Nonetheless, I felt extremely proud of myself for juggling so well one of the dirtiest code I’ve written - with so many global states, so many side effects, so many unexplored dependencies, so many nomenclature errors, so much incidental complexities, etc…, I still had a pretty good grasp of the source code. (Patting myself on the back.) It’s been 5 years for me to work with Clojure professionally, to embrace the Functional Programming doctrines, yet I was surviving this 100% imperative codebase. I guess imperative code isn’t bad - as long as I can fit all the code in my head. And, to be honest, I think imperative code is a better fit for game programming than functional programming code. However, I don’t dare to use Object-Oriented Programming for game programming yet. OOP still felt too wrong for me.
Spent another hour or two to do the cover image. This was also the first time doing a digital/pixel art piece as large as this one.
I decided to start the day by creating the game page on itch.io and testing the release process. Creating the game page then led to an hour of making the banner art work. I was glad that I tested out the release process because it didn’t work on my machine. Sigh. This could be related to my old 2015 11” MacBook Air. I’ll have to borrow another machine tomorrow when submitting the game. Tomorrow would also be my last day to work on the game because I’d be traveling later this week.
So, tomorrow is a big day. I’ll have to finish:
- Adding music
- Adding SFX
- Implementing end game
- Implementing puzzles for the rest 3 mushrooms
And if I get the time, I’d like to finish
- Prettier intro,
- Mushroom animation,
- Improve jump control (cayote time, press-and-hold)
- Probably 10 other more things but I cannot recall now.
Stumbling through the finish line. This was my last day of development before the Game Jam submission. I had a major issue to build the executables that got me felt pretty devastated but was able to find a workaround after an hour. Sorry Linux gamers, I don’t have the AppImage build for you yet. You’ll have to download the love2d executable to run the .love file.
I don’t think I complete anything in my good-to-have list from yesterday. But I manage to make a playable game. For that I felt extremely proud of. Again, I didn’t feel well-prepared coming into this game jam, even though this was my third jam.
Hope you enjoy playing!
- Code by Daw-Ran Liou; licensed under GPL-3.0
- Visual Art by Daw-Ran Liou; licensed under CC BY-SA 4.0
- Font: Silkscreen by Jason Kottke; licensed under Open Font License
- Color palette: Tangerine Noir by we
- Music:
- Forest 02 by Beau Buckley; licensed under CC BY-SA 4.0
- Cave 01 by Beau Buckley; licensed under CC BY-SA 4.0
- SFX by Daw-Ran Liou; licensed under CC BY-SA 4.0
- Software used for creating this game:
- Aseprite for creating all the visual arts
- Tiled for creating the levels/maps
- 1BITDRAGON for creating the SFX
- Emacs for all the coding part