Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1371978 Posts in 64690 Topics- by 56821 Members - Latest Member: juvtyjavi

January 24, 2020, 06:26:34 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsMoonflight - pixel art spook-em-up & witch dating sim
Pages: [1]
Print
Author Topic: Moonflight - pixel art spook-em-up & witch dating sim  (Read 1317 times)
qkjosh
Level 0
*



View Profile
« on: August 10, 2019, 09:48:41 AM »


Moonflight is a spook-em-up game set in a world of magic and mystery. Travel far across the ocean in search of the legendary witch, Baba Yaga. Become her apprentice and spend the summer gathering magic plants, tending to your greenhouse, and brewing potions. In your free time, get to know other witches living on the island, take them on dates, and watch your relationships grow!

I’m @qkjosh, the lead developer of Moonflight. I’ve been working on this game with @AlcopopStar, the game’s pixel artist, and a small team, for the past two years. As we’re getting closer to completing development, I wanted to open up more about the process with a dev log! I’ll try and post updates every so often when I have something to share, but I’m also open to questions about any of the tech or design decisions.


Bel is a witch in her final year of studies at The Academy. Fascinated by myths and legends from a young age, she convinces her childhood friend, Chime, to spend their last summer vacation together searching for the fabled witch, Baba Yaga. The two travel to Bel’s family cottage, far in the Northern Isles, and begin their search. When Bel manages to find the Baba Yaga, she is enthralled by the witch’s knowledge of forgotten magic and plants. Baba Yaga begrudgingly takes Bel on as her apprentice, yet Bel may learn more about the island’s secret than she bargained for.



Illustrations by Lana Jay



Dev Log
« Last Edit: December 14, 2019, 01:38:36 PM by qkjosh » Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #1 on: August 10, 2019, 12:27:40 PM »

This is my jam! So following this.

I dig the 2-bit palette and the character designs are extremely lovely! I LOVE Lilia.

Good luck with your project, I'll keep an eye on it!
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
QOG
Level 3
***



View Profile WWW
« Reply #2 on: August 11, 2019, 12:15:13 PM »

Digging the art style as well, posting to follow.
Logged
ClickPad
Level 0
*


View Profile WWW
« Reply #3 on: August 11, 2019, 12:23:35 PM »

That artstyle is just fantastic  Kiss
Logged
qkjosh
Level 0
*



View Profile
« Reply #4 on: August 11, 2019, 12:29:40 PM »

I dig the 2-bit palette and the character designs are extremely lovely! I LOVE Lilia.
Thank you! The palette limitations give it a strong aesthetic, but it's also fun being able to do all kinds of palette swap effects. I get to pretend that I'm developing for older hardware, haha.

I thought I would kick off the dev blog with a look at some of the special effects used in the game. I had done a short thread on Twitter previously, but I wanted to organize my thoughts and use some better gifs. Anyone who has played Yoshi's Island most likely remembers the stage, Touch Fuzzy Get Dizzy. I've always loved the weird, distorted effect used in that level, and I wanted to recreate it for Moonflight.

For my first attempt, I decided to send the camera output to a render texture, apply it to a mesh, and then distort the mesh.



I used a quad with a generous amount of subdivisions so that I could move the vertices to make it look wavy. Here's how that turned out. The effect was okay, except there were obvious issues with the UI and black empty background on the edges.



I was just working on memory of what the effect looked like in Yoshi's Island up to this point, so I decided to take a closer look and break down the effect step-by-step. I was surprised to find out that, first of all, the wavy effect only applied to the background layers. All character and enemy sprites, as well as the UI, were on separate layers and remained untouched by the effect. This makes sense, as you would want the important sprites on screen to remain readable (there are probably also hardware-related reasons). Second, the ground moves up and down, in a pattern that's different from the background distortion. I'm guessing they just split the ground into 8px-wide columns and shifted them up and down in a sine pattern - but ultimately this was irrelevant for Moonflight, as there is no solid ground when you're flying!



I created a secondary camera whose only job was to capture the background layer in the scene, then wrote some screen effect shaders. One is a pixelation effect, that changes the scale of the pixels. In the above gif, I've slowed it down when this effect kicks in - right after touching a fuzzy, there's a short blurring effect that fades out into the distortion effect. The other shader is a simple distortion shader that just warps the screen in a wavy pattern.



The end result turned out like this:



Overall, I'm pretty happy with how it looks!
Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #5 on: August 11, 2019, 01:11:31 PM »

This is AMAZING

DAY ONE
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
c023-DeV
Level 2
**


DevZoo


View Profile WWW
« Reply #6 on: August 12, 2019, 11:59:38 AM »

Yep, dizzy  Smiley
Logged

qkjosh
Level 0
*



View Profile
« Reply #7 on: August 13, 2019, 07:13:37 PM »

Mini mid-week update, testing out a new "shooting star" spell!

Logged
Rarykos
Level 1
*



View Profile WWW
« Reply #8 on: August 14, 2019, 12:00:27 AM »

Oooh this looks real nice! Shocked
Logged

Strook
Level 0
***



View Profile WWW
« Reply #9 on: August 15, 2019, 09:14:13 AM »

this looks lovely !!  Wizard
Logged

qkjosh
Level 0
*



View Profile
« Reply #10 on: August 26, 2019, 05:18:17 AM »

It's been a busy couple weeks since my last dev log, so here's a quick update on development:
  • We started working with a sound designer, Erin, and it's been very exciting hearing the game come alive with all the new sounds.
  • Added a scheduling system for spawning plants and enemies. Plants show up based on the terrain you're flying over, and some rare plants will only show up under certain conditions like a full moon. Similarly, enemies live in specific regions and get stronger/weaker under a full/new moon, respectively.
  • Added a summary screen at the end of each flight that shows you all the plant clippings and seeds gathered that night.



For this dev log, I wanted to explain the potion brewing system, one of the core features of Moonflight. I'll be skipping over the plant gathering and gardening/greenhouse parts of the process so I can focus on the distillation, mixing, and brewing steps. Here goes!

Distillation

The potion brewing system Bel learns from the Baba Yaga uses two types of ingredients, plant clippings and extracts. While clippings can be gathered in the wild or taken from plants cultivated in Bel's greenhouse, extracts require the use of a distiller.



Mixing

Extracts contain concentrated magic and are the main factor in determining the "effect" of a potion, while clippings are unrefined, and contribute less to the effect of the potion, instead imparting a "region" element to the potion. By using a ritual Mixing Circle to organize ingredients prior to brewing, Bel can create potions of varying strengths and effects. The Mixing Circle relies on the concept of affinity links between effects and regions to determine the outcome of a potion. Each plant's regional element is determined by where it grows, while the effect is based on the magical properties of the plant. The affinities are as follows:
  • moon / ruins
  • health / forest
  • attack / mountain
  • speed / fields
  • poison / swamp
  • sight / ocean

The Mixing Circle is made of linking pathways running around the edge of the circle, as well as through two triangular symbols in the diagram's center. When a plant clipping and extract sharing an affinity are placed along one of these lines, the affinity link is activated, and the potion becomes stronger.



The formula for determining potion strength is as follows:
  • 1 Point for each common ingredient
  • 2 Points for each rare ingredient
  • 1 Point for each affinity link

The maximum potion strength in theory is then 18. Each point contributes to the duration that the potion remains active, at a ratio of 1 Point to 15 Seconds. Depending on the effect of the potion, the total strength points are converted with different ratios to determine how potent the potion is - for example, does this health potion restore one, two, three, or more hearts. As well, potions can be classified into three groups: basic potions, strong potions, and special potions. When a potion is made with 7 Points or more, it becomes a strong potion. Strong potions have both a primary effect and a secondary effect. Special potions are strong potions made with specific combinations of ingredients, and they have unique effects.

Primary and secondary effects are determined by the mix of plant clippings & extracts. As mentioned, extracts correspond to specific effects, so they are the main factor. Clippings correspond to a regional element, so instead we use the effect that region shares an affinity with. For example, a clipping of a swamp plant would give the potion a poison effect. There is a ratio of 3:1 between extracts and clippings in determining the potion effect.

That might sound complicated, and it kind of is... but in practice, it's enough to remember to use plant extracts with the desired effect, and to use affinity links to make stronger potions. The system is modeled after cooking in The Legend of Zelda: Breath of the Wild, and is actually very forgiving; there's just enough variability introduced by the complexities to keep things interesting, I think.

Brewing

The last step in the process is brewing! My early design for this was more of a mini-game, where you had to stir in different directions while racing against the clock. This step also influenced the outcome of the potion. We tried a few different approaches, but none of them felt right.



We ended up scrapping the mini-game idea and created a more meditative process. Now, this step simply involves stirring the cauldron, while Bel muses about each ingredient in turn. Her reflections are generated at random with a simple text generator system. The goal was to build a calming, reflective moment where the player can unwind after the shmup gameplay segments, by providing these tiny glimpses into Bel's thought process as she stirs.



As with other parts of the game, we want to respect the player's time and make it easy to play in small chunks. For both the distillation and brewing steps, you can skip to the end result by selecting the Auto option instead of Distill or Brew.
« Last Edit: August 26, 2019, 05:31:16 AM by qkjosh » Logged
qkjosh
Level 0
*



View Profile
« Reply #11 on: September 28, 2019, 11:46:33 AM »

Something I've been working on for a while now is making the overworld map bigger. For the first pass, I wanted something small and cozy feeling - but after some initial feedback, realized that it was too small to convey the feeling of flying over a vast, wild landscape. So I decided to make it 4x bigger! Here's a before and after:




Link to Full Map

For those curious, I also wanted to share how the map works. The map has several layers to it, allowing me to stack various levels of data.



The rough shape of the various landmasses, roads, and swamps are built on a straightforward 16x16 tile grid. All the trees, houses, mountains, etc. are actually objects in the scene - this allows me to break up the grid and get proper z-sorting.

Next, there's a tileset for terrain types, so whether that spot on the map is a field, forest, mountain range, ocean, etc. When you start flying, the terrain changes according to the path you chose on the map, with each area having different backgrounds and types of enemies.

There's also a difficulty layer (green/orange/red) that determines how many enemies you'll encounter in that region, and the types of attacks they'll use against you. Generally, the enemies get more difficult the farther from town you fly.

Finally, there is a tileset for place names. While you're planning your route on the map, the name of each region is displayed on the map.
Logged
qkjosh
Level 0
*



View Profile
« Reply #12 on: December 14, 2019, 01:37:53 PM »

Small bump this time around! Dev has been a little slow, but things are picking up again, and I have a number of things in the works for Moonflight - pretty much just waiting for the right moment now. In the meantime... here's an enemy that I recently updated! The code for this little guy used to be a bit of a mess - it was one of the first enemies I implemented, and since then, the code design for enemies has changed a lot. Pared things down from 6 or 7 different scripts into just two. I have plans to add a few more movement patterns and a venom attack...

Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic