Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

[Devlog] Sprout Story

A topic by Nessa created Jul 30, 2023 Views: 192 Replies: 4
Viewing posts 1 to 5
Submitted(+1)

Devlog Introduction

Hello fellow developers!

I’ve been creating games off and on using GameMaker for a long time, joining the occasional jam here and there. I’ve long desired to get into a more regular game development rhythm because I love crafting unique worlds for others to experience. This jam seemed like the perfect opportunity to do just that!

My goals for this jam are many: I hope to gain a better understanding indie development scene, especially here at itch.io. I’m also ready to play some neat games, offer some insights to less experienced developers, and hopefully make some friends along the way!

I invite you to drop a comment or simply say hi and tell me about your own game! Wishing you all the very best of luck and lots of fun in participating in this jam!

Thanks for stopping by!

Submitted(+2)

Day 1: Game Idea

To fit the theme of cycles, you will play as a flower that can transform into a mobile seed, which will replant itself, sprout into a new flower, and begin the process anew.

The game will be a non-violent exploration game with collectables and a very simple story that serves as a goal for the player.

So far, I’ve been working on graphics, have a mostly complete plan for the game, and have gotten the basic gameplay mentioned above implemented.

Next, I want to add a variety of game elements while ensuring this interesting movement feels nice to use.

Submitted(+1)

This looks adorable! I'm looking forward to seeing more! :)

Submitted(+1)

Day 2: Area One and Tasks

So far I’ve created the entire first area. I spent a little too much time ensuring that no platform was tedious to use! This area features the first of five animals you’ll encounter in the game, the sheep!

Each area features an animal which you will need to interact in order to traverse it. The sleepy sheep for example repeatedly snores. This produces bubbles which you can use as a vertical boost to jump higher and farther and to reach otherwise inaccessible areas.

I usually (and inefficiently) keep the entire plan for a jam game in my head, but this time I’ve decided to create a very tentative task list:

I’ll do my best, but will probably forget to check things off as I complete them. I usually use the process of creating a task list to further refine my ideas and ensure my plan is realistic.

Submitted(+1)

Day 3: Let there be light!

I’m satisfied with how my lighting system came out! This is my first time seriously working with GameMaker’s surfaces and blend modes. I recall a time when the now seemingly simple math behind these systems mystified me. It’s heart-warming seeing how far I’ve come!

In creating this system, I hit a program design issue: how can “regular” game objects be differentiated by “light source” objects. I can’t use GameMaker’s inheritance system because there would be overlap between my object parent/child hierarchies and GameMaker doesn’t have multiple inheritance (to my knowledge anyway) like Java’s interfaces, which would be perfect for this situation.

I’m sure I could do something fancy like check if light source required functions are defined/undefined in a given instance, but I didn’t want to fall into a rabbit hole creating a large framework from scratch. My solution is to just put the object indexes of “Light Source” objects into a global (assumed constant) array:

Each of these objects are expected to have the following functions defined (but this is not enforced!) like here in the PlayerSeed object:

The actual drawing of light sources is currently inefficiently using double iteration each game frame. I iterate once through all active instances (in GameMaker, this includes my game engine objects, invisible “marker” objects, etc., things that most definitely not produce light), then iterate again against the aforementioned global list of “light sources” to ensure that the currently considered instance is indeed a “light source”. If so, a light is drawn.

I’ll likely optimize this functionality by maintaining a list of Light Sources as they are created and destroyed, requiring only a single iteration through entities. However, because there aren’t too many instances in this game at one time (~15 instances * 5 Light Sources * 60 FPS = 6000 iterations per second, drawing lighting once per game frame), this optimization isn’t super necessary.