Faerie Solitaire Dire

Faerie Solitaire Dire is one of our next projects. Like FSH it has technically been in development for a few years, but didn’t get active development time for most of those years. It was originally a Monkey-X project, and has been ported to Defold. Here’s the Steam page

This thread will journal its development toward eventual Steam release!

Something interesting is that Dire already has more than 1,000 wishlists on Steam. FSH only just reached 1,000 wishlists when it released! So this is a good sign of progress on the Steam platform for games like this.

We are targeting a release date of October, if we do not make that we will target December. Let’s just say for now release date of Halloween (there is no official release date, only “2019” but this will be the target for progress :slight_smile: ). So with that target 82 days until release!

When we first conceived of FSH and FSD they were each thought to be as opposites in different directions of our old 2009 game Faerie Solitaire. FSH was supposed to be much easier, FSD was supposed to be much harder. Naturally both iterated beyond those ideas in their own ways. The first version of FSD we released to early supporters was super hard 100% of the time. What we’re doing now is keeping the challenge but evening it out so it’s more balanced over time with more variation.

We are lucky because FSD benefits from a ton of the work we just finished with FSH. So on top of what was already done years ago it gets a head start in polish in many ways, and we can focus on other things. My first focus with Dire will be pet art. I’ll be experimenting with animating the pets this time, using spine to give them some idle animations and reactivity to cursors / clicking so they all feel alive.

There’s more to say and show so until next time!

20 Likes

77 days until Halloween!

dire_logo

There’s still a ton of work left to do. Right now I’m making battle plans for how we are going to create all of the content in time. Unlike FSH, Dire has an A-Z story. Not only that but it has some non-linear aspects to its story. Instead of being a single long loop, the player can choose locations, and within those locations there may be unique story elements.

I have a gist of the story done and rubber stamped by those involved. I still need to write the entire script text out. There’s older story text but it’s being scrapped / reworked into the new ideas. After the script is done then I need to illustrate all of the characters and…

There are 2 main sections to the story, and each main section has a dozen or so landmark points in the story with each landmark having several locations with story and so on. So with a vague multiplication of those things… it’s a lot of content. Luckily a lot of content is already done and will be reworked to fit in, but it’s still also a lot more left to do.

FSH’s release estimate was off by a while but not by much. We targeted Easter and were 1 day late, because we had to wait until Monday to release it. :innocent: I’m seriously going to try to make Halloween with Dire but we will be racing the clock hard and cannot suffer timing setbacks to make it. Even if it’s not made as long as we release Dire 1.0 in 2019 I will be happy even if it’s just before Midnight on new year’s…

I mentioned before about animating pets with spine - that is the plan, but I’m going to test making 3d assets for the pets too. Imagine looking into mini rooms where 3d models of the pets are, and if you change the mouse position (or mobile device tilt) the perspective inside of each window changes with it… I think that would be super cool and I think it’s possible but it’s both a lot of work and something I need to spend figuring out. It would be even cooler if they had idle animations, and were able to react to cursor clicking (like a horse reacting to a fly landing on it…). If the 3d tests turn out well then I’ll commit to it, otherwise it will be spine + 2d assets in maybe a 3d space.

9 Likes

72 days until Halloween!

preview_board

I’ve been posting some for Harvest, mostly for post release issues, but I’ve also been working on Dire behind the scenes…

I greatly appreciate FMOD Studio but we can’t afford to spend $2k on a license for Dire, and we would have to wait until April 22nd to release Dire if we used FMOD to use it for free - and there are no other options for lower prices. I still want to target this year so we are going to switch to OpenAL most likely. With this extension by @sergey.lerg https://github.com/Lerg/extension-openal and adding features we need ourselves or bribing other developers with money to contribute. I think there is OSS we can use to convert audio in convenient ways FMOD does too… there are also special considerations for mobile which have to be addressed eventually. If OpenAL turns out good and we get other tools and scripts to be just as productive then we may stick to it for good (and keep helping its Defold extension to improve), if not we’ll switch back to FMOD when we can for the next project after Dire.

I am NOT recommending against using FMOD. If you have a big commercial project absolutely use it, it is a huge productivity boost for audio.

5 Likes

Dire wishlists on Steam are at 1,596 so far.

We are on track to get a private alpha available to early testers by Halloween. Currently we are for sure not going to make October release, but December is still possible. The audio situation is still not improved and it is a hard blocker for release.

28 days until Halloween!

5 Likes

Current Dire wishlists on Steam: 2,390

We did do testing and got some good feedback. The main consensus was… to make it not so punishingly hard in the adventure mode. So we are moving most of the challenging content to side areas, and adding an optional difficulty modifier that gives risk/reward opportunities.

Much of the game has changed since my last post. Many reworks, big changes in service of a better game. We dropped FMOD and are using builtin audio only now since other options were also not really ready still.

We have a release date in mind (not public) and will continue work to make it.

11 Likes

Built-in sounds have now a lot of useful things I think :wink: If there will be something that you miss and was in FMOD can you share your thoughts or if you found a solution/workaround?

A few things FMOD has that vanilla Defold does not:

  • Threaded playback to avoid stuttering when engine is doing work like loading (even async loading causes stutter in some situations) - this is on the public timeline to address though
  • Super easy audio compression for target platform, audio conversion and playback in native, imagine if we had texture profiles but for audio that’s what it’s like
  • The way you can create / mix / modify sounds in the editor, but this can be done elsewhere such as in Audacity, it’s just really convenient

Those are the main things. Defold will hopefully get threaded audio playback in the future at some point according to the roadmap. Only WAV and OGG are supported by Defold, there are platform specific types for iOS/Android which would be useful, @sergey.lerg was working on an audio extension for native audio playback for music to avoid memory issues.

The main things we did in FSR to mitigate the issues is:

  • Super aggressive muting of audio during loading of anything, audio would stutter if you could hear it, we basically don’t load anything during normal gameplay it’s all in memory all of the time
  • Keep all music and sounds loaded all of the time (and having limited playlists at a time), for our games we have music playlists, ideally we would async load/unload as needed but it does not work since you don’t want to mute the game when switching songs.

The thing about FMOD for us is that we did not actually use it for the really cool features it has, we used it for basic things that felt necessary for the quality of FSH. With FSR we did more to try and mitigate the main issues and it did seem to work even though it was not ideal (I still hear stuttering sometimes, people with old HDDs report stuttering but there is zero we can do it, most people don’t report audio issues even if they notice small ones), so that’s why I’m more comfortable using it again for Dire. If your game has needs for more of the cooler features FMOD has then it is still a choice you should consider.

I am hoping builtin audio will continue to be improved so there is no need to use external tools.

3 Likes

Yeah, that’s why I also was excited about an announcement of threaded sounds. Thanks for your feedback! :wink:

1 Like

Current wishlists total for FSD is 2,412. For much of the month of May I will be trying to hype the game up, making promotional material, and documenting the process as the wishlist total hopefully rises.

We didn’t do a ton of promotion for FSD so far, have mostly focused on making the game.

I really want to make a “Prologue” story demo for Dire. ~90 minutes of story/content with a good hook.

FSH had almost 3k wishlists just before release. For FSD, we are targeting 5k absolute minimum before we release.

6 Likes

Current wishlists: 2,456

Very busy!

I’ll be updating the store page soon with much better new screenshots and new trailers. The story and gameplay trailers will each be clearly marked since I know many gamers just want to see gameplay while others may want to be hooked by the story.

We are going to try and participate in this https://partner.steamgames.com/doc/marketing/steamgamefestival I’ve already submitted Dire (submission deadline is already passed). I’m not sure if there is a selection process or if we’re already able to participate, I don’t know if it will just be a big mix of games they show or if they will only feature ones those at Valve like and curate to focus attention on. I’m focusing on making a demo build now to submit before that deadline. Demo length will be all of the prologue of the story (of which content I’m working on now). Hopefully it turns out worth doing but I don’t have huge expectations, if we can get at least 1,000 more wishlists during the days it’s live I’ll consider joining a success.

5 Likes

Based on what I learned from this video I would recommend you make the gameplay trailer the one that shows first, and story second.

4 Likes

For sure! I’ll be making the first few frames of each have large bold text saying either “GAMEPLAY TRAILER” and “STORY TRAILER” to make it even more clear from the thumbnail which is which. I’m also going to do a very short super hype trailer for the portals and mobile stores.

3 Likes

Several months later and our next game Dire is soon to release… the planned date is September 4th as long as nothing goes wrong until then. We’re still working on finalizing it, and like with Harvest we’ll have a few months of post release updates with several major free additions that will happen. The price will be higher than the last game, $17.99 this time, 10% off launch discount.

Wishlist total is 3,164. Although I am officially off the Wishlist bandwagon and even Steam/Valve bandwagon (I wrote an angry rant detailing some reasons why https://www.solitaire.io/blog/valve-is-not-your-friend/ ). Wishlists can still be valuable for big games but I feel like it’s a completely bad idea to build wishlists themselves. If that’s not what Steam is supposed to do organically itself then it’s not worth the developer focusing their energy on doing. And furthermore driving sales to Steam as devs should never happen. Devs should always sell directly (if not completely direct itch.io is good enough), and promote their direct purchases/their own newsletter counts, not feed the beast that is Valve’s soft monopoly. So with our next games which we probably still publish on Steam we will try to never link to Steam, we won’t focus on building wishlists, and instead we will focus on only building newsletter subscribers. We will also be pricing all of our direct sales copies of our games ~20-30% less depending on the title than the Steam version going forward as permanent discounts. So the direct purchase price of Dire will probably be $12.99 when we set it up.

With Dire we made several new useful side products. One of them is Stage. Which is a pseudo Visual Novel like scene system. The cool thing about it is that it is super easy to customize everything since it all takes place within GUI scripts. It’s not universally perfect for every use case but for us it is a good simple system.

The above scene is produced by this script:

require("globals")
local stage = require("screens.stage.code.stage")
local broadcast = require("ludobits.m.broadcast")
local richtext = require("richtext.richtext")
local monarch = require("monarch.monarch")

local cursor = require("main.code.cursor")

local stage_handler = require("screens.stage.code.stage_handler")
local audio_manager = require("imports.audio_manager")

stage.routines = {}

function stage.routines.part_1()
	local title = "Prologue 1"
	local subtitle = "Dreams of Fate"
	stage.title = title
	stage.subtitle = subtitle

	stage.animate_background("bg")
	stage.animate_titles(self, title, subtitle)

	print_line("START PART 1")

	stage.say("<macro=lotus>Jha</macro> dreamt of the <action=particles:text_emitter_green><color=abyssal_green>end of all things</color></action>. This dream was his earliest memory. When he slept he would see emanations of fate, over and over, events that would soon pass, others that could be years away.")
	stage.say("He saw a fierce girl with an ethereal sword of <color=sunlight>sunlight</color>, this child would one day be his daughter, he thought.")
	stage.say("Menia: ...!")
	stage.say("Jha saw Seteri, who had been training Jha to take the oath of the warden and enter the depths of the abyss as an <action=particles:text_emitter_green><color=abyssal_green>undying child</color></action>.")
	stage.say("Seteri: You have been chosen. Come with me, Jha.")
	stage.say("Jha was 4 when he was taken away from his parents and made to begin training, now he was 15, almost a man. ")
	stage.say("He should have already been forced into the abyss and given to the other wardens, but something was wrong with Jha. ")
	stage.say("The <action=particles:text_emitter_red><color=lotus_red>breath of the lotus</color></action> would not take, his skin had still not turned to ashy white, he did not fear the sunlight or moonlight or starlight. Yet when visiting the chasm that he would have one day been made to enter, his resilience against the dark was perfect. ")
	stage.say("Jha knew that Seteri feared him. He saw Seteri speaking with the other elders of his tribe, mad with fear, that Jha had been given the <action=particles:text_emitter_red><color=lotus_red>drink</color></action> made from the abyssal lotuses, and yet he did not <action=particles:text_emitter_green><color=abyssal_green>turn</color></action>. If Jha were allowed to still join the wardens and complete his training, he would be able to return without fear, and walk under the sun and stars.")
	stage.say("It was too much of a risk for Jha to ever enter the abyss. Seteri took a long bone knife and walked to where Jha was sleeping with the intent to kill.")
	stage.say("Jha saw a boy from the village who was now, in his dream, some years older, he had taken the oath, and turned. Seteri was behind him, clothed in heavy garb dyed in the colors of the <action=particles:text_emitter_red><color=lotus_red>undying lotus</color></action>.")
	stage.say("Seteri: Descend.")
	stage.say("The boy looked back at Seteri with fear in his eyes, and shook his head. The chasm tree’s mites swarmed around Seteri, lashing at his face, but did nothing to the boy.")
	stage.say("Seteri: This is your duty. The others are waiting for you on the other side. Now go, be brave, take the final step.")
	stage.say("Jha saw that there would be hunters sent after him, he saw where the hunters would look, and so he knew where to hide. The elders would send assassins for years, but Jha would kill them.")
	stage.say("Jha awoke some time before Seteri would decide that he must die.")
	stage.say("Jha carefully took what he would need, and quietly left his village behind, never to become a warden.")
	stage.say("He would return one day.")
	stage.say("As the divine emperor of all of <action=particles:text_emitter_green><color=abyssal_green>Atlas</color></action>.")
	stage.scene_over = true
	stage.say()
	stage.delay(.6, true, true, false)

	stage_handler.go_back()
	print_line("END PART 1")

end


function init_actual(self)
	stage.init_actual(self)
end

function init(self)
	stage.init(self)
end

function final(self)
	stage.final(self)
end

function update(self, dt)
	stage.update(self, dt)
end

function on_message(self, message_id, message, sender)
	stage.on_message(self, message_id, message, sender)
end

function on_input(self, action_id, action)
	stage.on_input(self, action_id, action)
end

function on_reload(self)

end

Between any of the stage.say() commands you can put any kind of logic/animations/whatever you want.

Most of the magic is from RichText (with some custom features) and Lua coroutines.

Localization is handled in a similar way to Ren’Py.

This Stage system (along with a nice and complete example project with some extra goodies) will be released in the future for free for any active verifiable sponsor of Defold on Github. The amount doesn’t matter, anyone with an active sponsorship will be able to download it once I release it. Going forward, most of the things I release will be for sponsors of Defold only as a way to incentivize and reward the people who do that. If you’re not a sponsor yet go support Defold here https://github.com/sponsors/defold even $1 adds up if many people do it. Supporting the Defold Foundation is very worth it and is our responsibility to do as devs who use the great software.

17 Likes

Today is release day… well, it’s actually the release day of the Early Access version. :scream: A week ago we got together and decided that we wanted to spend more time polishing (or even entire asset reworking in some cases like the main menu), so we are going to do 2 months (or less) of Early Access and then release the full version in around October approximately. Most changes will just be improving what we have, not game redesign, only some places will be totally different. Because of Early Access we also decided to lower the price to $9.99, and we’ll raise it in October to only $14.99 instead of the oringally planned higher price.

Wishlists are at 3,728 and that is all on being on the competitive releasing soon list, actual organic visibility on Steam!? If we got this many wishlists normally it would actually be sustainable… sadly it’s not going to last. Most likely it will reach 5,000 a few days after release day, and then most of those wishlists will not convert to sales until maybe 3 years from now. :innocent:

Steam Likes also has it relatively high now, likely entirely due to the boost in wishlists, or possibly Steam just gives more “likes” to games about to release. No idea, but it’s still nowhere near enough to be competitive with a general Steam release.

I’m crossing off a few more things from my list then making builds to make the game live (in Early Access).

Here is an example of some of the changes we already did with the main menu… new is still WIP.

Old

New

The buttons have a cool effect too, entirely done with clipping and particles.

We’re not expecting untold riches, we just want to make a good solitaire game and then be able to make another one after. :cowboy_hat_face:

15 Likes

Looks great! Good luck!

3 Likes

I think its worth putting a link down here as well: https://store.steampowered.com/app/556530/Faerie_Solitaire_Dire/

3 Likes

If anyone is online and has either a MacOS or Linux PC with Steam installed please PM me so I can send you a Steam key to make sure the builds run before I press the release button. :slight_smile:

2020-09-04%2010_05_49-Faerie%20Solitaire%20Dire%20(556530)

Very cool, Valve. :roll_eyes:

1 Like

That UI button effect is really nice! Impressive that it’s all with clipping and particles. They have a great sense of depth!

1 Like

The secret is layering various large cloudy particlefx with slow lives at different transparencies.

We have no choice but to change the Early Access release date to next Monday September 7th and hopefully the thing preventing release is fixed. The launch button is disabled on weekends on Steam for everyone.

2 Likes