Skip to main content

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

Fortune teller game

A topic by everythingisbacon created Feb 01, 2022 Views: 270 Replies: 15
Viewing posts 1 to 16
Submitted

Hey all,

First jam of 2022 for me after doing nothing at all in 2021. Going to try to do a few this year, but let’s start with this cool theme! Last month I was just thinking that the mechanics of Tarot would be a fun little programming challenge and then I came across this jam! Good timing. :)

Thanks to work I’ll probably only have an hour or so each night to put towards this, so I’m going to keep my project small. It’s going to be a fortune teller app with a voxel art style. I’ll be using Unity. I have a large-scale project that I’m working on that’s voxel based, so this is also a chance for me to explore some more artistic aspects of voxels that I haven’t been able to do in my other project. :) 

Tonight I came up with my concept, downloaded the tarot cards, and created the fortune teller tent asset. It’ll eventually be full of cool mysterious stuff! I’ve also sketched out the fortune teller, I might try to model her tomorrow if I don’t spend too much time on accessories.  

Last but not least, I researched a Tarot spread for the fortune teller to do readings with. If I suddenly end up with more time I might program a few different spreads, but for right now she’ll just be doing a simple three card “Answers from the Universe” deal. 

That’s it for now!

Host(+1)

ooooh, that's a really cool tent! good luck :D

Submitted

Back at it for night two! Had a bit less time this evening but still managed to knock out a few assets. I feel like I have a vision for the scene now and I’m eager to get into Unity to try and make some cool ambient particle effects. Pixelated fog? Yes please! 

In the meantime, here’s what tonight produced:

The fortune telling table and chair for the player to sit on. This will be just inside of the tent.

I decided that there will be a glowing skull parameter around the tent, à la Baba Yaga. This isn’t  the first time I added bone fences to my artistic endeavors, and it won't be the last! 

Spooky tree! The player is going to find themselves in the middle of a strange forest, when aha! Suddenly the tent appears out of the fog. I might do a variant of the tree, but the scene is going to be pretty tightly focused and I think I can get away with just careful positioning. We’ll see once the scene is composed in Unity.

More assets tomorrow, and maaaaaybe the fortune teller herself. She’s going to be a bigger design deal so I might reserve her for an entire working session the night after next, but we’ll see.

Submitted

Alrighty, we’re officially in Unity! Tonight I made a couple more assets, then dumped everything into the engine so I could start blocking things out and see what other scene assets I need. I think I am going to make another tree or two for more variety, since the shot I set for the start menu is a bit wider than I had originally expected. I’m also going to make a few foliage pieces to help define a pathway that I’ve decided to add. Here’s a quick screenshot of how I envision the starting menu, complete with really ugly notes. :) 

I need to make several more assets for the tent interior, but I did make a pretty cool skull that you can see in the back. I still haven’t gotten to the fortune teller, so I ugly sketched her positioning. Any likeness to Among Us is entirely accidental I swear.

I haven’t decided on a color pallet for the fortune teller yet, but I want her to really pop, so it might end up being red? We’ll see. 

I’ll definitely be adding more stuff to the table. Right now I’m thinking of some candles for sure, maybe a small cauldron? I want more opportunities for glowing effects, as the tent itself will be much darker than the exterior environment. 

And that’s it for tonight!

Submitted

Boo! I was tempted into the black hole of lighting/post processing tonight and ended up wasting a whole bunch of time. I was thinking “Oh, if I just block out some lights, it’d be really cool…”

I’ve basically done zero lighting or post processing work in URP, which is the render pipeline I saw fit to use for this project. Things are…different. I’m having serious thoughts about jumping ship and swimming back to the good island Built In Render Pipeline. Do I feel guilty about this consideration? Slightly. But the goal of this project is to get something out within the specified timeframe and to generally dev without stress, so… Yeah. I might go that route before I add too many more assets.

Speaking of assets, I did manage to make a few before I was pulled in by the illuminated Siren’s call. The tent interior has some more décor.


 I feel like I still need some stuff on the sides, but this is a tent, so it’s not like she’s going to be able to hang shelves. All the stuff hanging from the top of the tent will be glowing (thus my desire to test some stuff out), which will help break up the dark purple. 

I think these are all the accessories for now, though. I need to have a better sense of how much space the fortune teller will be taking up, especially with her animations.

..Plus there’s a different render pipeline to switch to..

I’m going out of town tomorrow, so there’ll be no updates until Saturday!

Submitted

Here’s a fun fact about your dear pal Bacon: I don’t actually like weekends very much.

Well--I like the concept, I enjoy looking forward to them, but without the structure of the work week I become a sloth. I will live on the couch and binge TV shows and I’ll eat pastry and oh boy is that some wine? 

It’d be okay if it was just one day, but nope, my sloth just…sloths all over the full 48 hours. 

So I’m back at it again on a Monday, and let’s just pretend I never said I was going to update on Saturday, shall we?

Here’s another fun fact, and maybe you already know it (because I certainly do, but that doesn’t keep me from forgetting when it matters): In asset import settings, you’ve gotta tick the Generate Lightmap UVs box if you want things with emissive materials to glow. 

I spent far too much time fiddling around trying to get my imported meshes to emit and receive light. It was annoying. But it’s also fixed now:

No proper lighting pass yet, just got those assets a-glowing. 

I’m also still working on my vision for the exterior world. I think I really just need to get the fog in to finalize the direction. But here’s where I’m sitting now:

I created the sprite sheet for the fog particles. I have an interesting concept I want to play with tomorrow. 

Ah--Also, I’ve switched render pipelines. Maybe it wouldn’t have been a big deal in the end since half of the issue was forgetting about generating light maps, but hey, choose your battles, right?

Submitted

Blaah. Just didn’t really feel the art tonight. Created some fog, not super happy with it at the moment, but it’s a starting point at least. I think it’s definitely time to move on to the fortune teller and revisit the environment at a later time. 

It’s a little hard to see, but here’s a gif of the fog:


And here’s a screen grab:


Aside from the normal background fog, I’ve added some symbols in the particle system. The concept is there but the execution isn’t quite yet. I’ll revisit it later on.

Here’s to better use of time tomorrow…

Submitted

New fog, who dis? 

Guess who got Aura 2 in a Humble Bundle once upon a time and forgot about it until tonight?!

I’ve never played around with it before, but just a bit of poking at buttons got me to something very close to what my original vision was, so I’m pretty happy. I’ll probably fiddle with it a little bit more, but I really need to finalize the ground before I say “Style Set!”

Also, we have a fortune teller!


I’m still not fully set on her outfit (it feels a little plain) which is why I only did a quick idle for tonight. I was able to get the key components of the outfit that I was envisioning, however. I knew from the beginning I wanted her to have braids popping out of her hood, and I wanted her eyes to glow. I added a mask in homage to not the terrible world we live in today, but to the merchants in Resident Evil 4---What’re ya buyin? What’re ya sellin? 

I’ve got the eye blinks running independently on a random timer, so she’ll sometimes blink at you a lot, and other times she’ll just…stare.

It’s hard to capture in the gif since I had to reduce the quality to upload it here, but I’m using a fun little hack with animation style mixing. The fortune teller’s idle animation is made by creating alternately configured versions of her mesh in MagicaVoxel--in other words, each frame is a unique mesh. The animation is just a matter of enabling and disabling the meshes in sequences. It’s not at all a time efficient way to animate, but it allows me to basically perfectly recreate pixel animation in voxel form, which is the aesthetic that I tend to stick to in my voxel work. The eye animation however…is linear! The reason for this is because I find selectively injecting smooth animations among stepped animations gives a fun otherworldly effect. The viewer might not immediately pick up on what’s going on, but they’ll get a sense that something is just slightly off, and this too is an aesthetic I like going for. 

You might also be sucking air through your teeth at the idea of animating via enabling and disabling meshes, but actually, it’s not as much of a processing overhead as you might think, especially in such a small project as this. Voxel meshes in this style by their nature are extremely low poly, and to get that pixel art look, you end up working with very few frames. I’ve had scenes full of 30+ fully animating characters in this way and haven’t experienced any frame loss at all. 

Ooh, what if she had antlers?

Questions for tomorrow. :)

Submitted

Particle effects, volumetric lights, and the first appearance of the tarot cards, oh my!

We also have a refined fortune teller. I added a few more details (and gave her antlers!), so now I’m happy with her. 


Hnnnggg that feel when art starts to come together…

Tomorrow will either be programming or animating, depending on what mood strikes me. If I’m feeling extra spicy, maybe a little of both.

Submitted

Clearly I forgot what a normal Friday is like, because I had way less time than I thought I would when I was making plans last night.

Either way, with my tiny bit of time, I made the card dealing animation.

I also made her antlers lighter since they were getting lost in the background. 

More tomorrow (should I make promises like this on a weekend?)!

Submitted

Well, better than last week! Saturday evenings are generally dedicated to DnD, which is precisely what’s happening tonight. However I managed to sneak some time in and create the Scriptable Object for the Tarot card data. I use Odin, so they’re also quite pretty:

Writing the card blurbs is an interesting challenge. Since I’ll have no way of knowing what the user will be asking the fortune teller, I have to make the language as generalized as possible. It wouldn’t make sense for ‘you’ to be referenced if the user asked a question about a friend. 

I’m going to try and make the time to write them all out tomorrow. But we’ll see!

Submitted

The card Scriptable Objects so far. This represents 907 words, which doesn’t seem like much now, but it takes a lot to read up on all these card meanings and translate them into useful blurbs for the game. In order to get everything running with the time I have left though, I’m going to have to make all of the SOs ahead of time and just put in filler text for now. That way I can make sure that the card draw is working properly and get the dialogue boxes working at the very least. Then I’ll just sneak in writing the full blurbs here and there when I can.

…I’m starting to appreciate why there are books published for card interpretations, geez.

Submitted

Behold!

ALL of the Tarot scriptable objects are complete. Most of them have placeholder text, but at least now I can write the core card draw functionality. Which is precisely what I’m going to do tomorrow!

Submitted

Behold even more!

So the core code functionality is done for the tarot draw. It was…way easier than I actually expected it to be. I know the gif is fairly low quality, so I’ll drop a screenshot of the game manager here in a second, I just want to point out that when the cards on the table are updated every time a new draw is made. Now obviously this isn’t how it’ll function in game, I just wanted to make it clear that the link is there.

Hookay so, this is the manager:

We have a list that stores all of the Tarot card scriptable objects, three SO variables to hold the selected cards for the spread, and then the actual card meshes in the scene. 

How it works:

Currently this all runs off of the Draw Cards button in the Game Manager. 

  • When the button is pressed, a method is run to select three random numbers between 0 and 78 (the number of cards in a Tarot deck). 
  • I then test those three numbers against each other to make sure that there isn’t a duplicate among them. This is done with a do while loop. 
  • I then shuffle the Tarot card list using the Fischer Yates Shuffle algorithm, and if you haven’t heard of that before don’t worry, I was in the same boat. But Googling is a mandatory skill and luckily someone on Unity answers actually had a code snippet ready to go: https://answers.unity.com/questions/486626/how-can-i-shuffle-alist.html
  • Cards now properly shuffled, I assign each of the SO variables one of the cards from the list using the random numbers I generated as the list index.
  • Cards now selected, I assign the SO’s image to the material assigned to the card meshes.

All in 73 lines of code! Obviously there will be more once I hook this functionality up into a final system, but I was really surprised by how little it took to draw those cards out.

So tomorrow, I’m going back to some animation work. I need to get those finished so I can finalize the flow. The fortune teller needs a shuffle animation, as well as a deck holding idle. Once that’s done, there are a few more loose threads here and there, but the main thing will be the dialogue boxes!

I will refrain from making estimations on timelines, as that’s bad luck. But I will say that I’m feeling very good about the progress on this project. And oh it felt so nice to program again.

Submitted

Despite the lack of posting the last few days, I’ve made a good bit of progress. All of the fortune teller’s animations are complete and set up in sequence:

The only last bit to animate is the card itself moving to a more visible location for the player as the fortune teller describes what it represents, but in order to create that animation, I need to know where the dialogue box is going to sit.

And the dialogue system is what I’m working on right now. I’m using the (conveniently named) Dialogue System from the Unity asset store. I’ve got the script already set up and now I’m just trying to design an attractive looking UI, which is admittedly a weak point for me. I do have the text scrolling with a sound effect already set up, so that’s pretty cool! The Dialogue System can do an amazing amount of stuff, which means it's a little bit of a challenge to onboard with. I’m slowly getting the hang of it, though. I’ll post here once I have the dialogue box designed, but I’m going to refrain from showing the dialogue itself. After all, seeing that is half the fun! :)

Submitted

Aaaaaaaaaaaaaaaand done!

https://everythingisbacon.itch.io/the-fortune-teller

Well. Okay. "Done." I managed to submit by the skin of my teeth, goodness gracious. I cut it way too close. I snuck in under the wire with a PC build, but then decided to see if WebGL even worked. It actually does pretty nicely, sans fog. So I have both versions available now. I'm going to work on this for one more day (there's a day left in February after all), and try to really pretty up the WebGL build.

...Also, I have 22 more card descriptions I need to write up. Whoops! I wasn't kidding when I said before that I understood why people charged money for books on tarot descriptions. It's so much work! 

At some point this week I'm going to try and write up a postmortem about the project. There was a lot of stuff that I learned/relearned about Unity game production that I'd like to document. 

But anyway, now I rest.