Hilvon

LD 40

Rating system "improvement" (?)

Following this thread I have suggested an improvement to a rating system to fix an "issue" with different people using different criteria during rating which results in some people strongly leaning towards giving many 5-starts left and right.

The proposed solution to this subjectivity of ratings was to add an extra step after the ratings are given, but before the scores for the games are calculated, to adjust all participants ratings so that they average at 3, and them use those adjusted scores at game level to compute average scores.

This way if a person was handing out 5-stars left and right those high ratings will actually not be that more valuable than 3-s. Similarly if a grumpy Grinch was 1-starring everything for no reason, those ratings would also not be harming the big picture.

As I mentioned, I suggested this "solution" mostly as a joke in answer to a person complaining about those "generous" raters, but it looks like the other participants of the thread (all 3 of them) actually liked the idea, so I am bringing it here for a broader discussion.

One thing that was pointed out by @huvaakoodia is that the system should not be set up as a black box. Meaning people should be fully aware of the existence of the system, and how it would affect the ratings they have given. And I fully agree, because there are drawbacks to this system.

The obvious drawback of this system is that is some "happy" rater 5-starred a game that actually deserved it - this well-earned 5 star rating will also be degraded down to about 3.

Second drawback is - more calculations required to put this system into place. Though it is actually no that many calculations. I didn't describe the math in the previous thread, but here I will. Feel free to ignore this bit if you aren't interested.

So, first of all, just to get this out of the way, what I am about to write is not the only way to "fix" the ratings to force them to average to 3. Actually there is an infinite number of ways to modify the ratings. For example we can just treat every rating as 3 and this will do the trick. A bunch of 3s will always average to 3. This is not a reasonable way to do the trick, but it is a way. :) But let's not use it.

Instead we take the exitsing ratings and compute their average. Let's call this existing average as X. Now we can multiply each value by 3 / X, and this will actually do the trick. But it might give us ratings that are out of bounds. For example if a rater was generous and the average is more than 3, then the rare 1 she might have given will turn into something less than 1. And if a game accumulates enough of such degraded 1s it might drag it's final score below 1 which will be... really discouraging to it's creator - scoring less than minimal score...

So how do we avoid this? Easy. Before we compute the average of existing ratings we substract 1 from each score (treat 1 as 0, 2 as 1, and so on up to treating 5 as 4). Then we use the step like previous - multiplying each of those ratings by 2/X and ((Notice that since we subtracted 1 from everywhere we want to force the average to be 2 rather than 3) and then we add 1 back to each value. This way we get come values for scores that are all no smaller than 1, and all average to 3! Yay! No?

Actually no. We are not yet done. Notice how we only checked the situation how a 1-star ratings from a generous rater were degraded below 1 and fixed it? But there is a possibility of an opposite scenario, when a rater was grumpy, gave a lot of bad marks, and so the correction is supposed to increase it's values - including pushing occasional 5-stars beyond 5. And once again - this introduces a possibility of a game scoring more than maximal rating, which, while not discouraging to the creator might have a bad effect on everyone else. So we don't want this to happen as well.

So how do we fix it? Actually the same way we fixed the problem with 1s! We just modify the rating before the multiplication turning 5 into 0 so it can't be modified by multiplying. Previously we subtracted 1 from each rating to do the trick. And now we need to subtract each value from 5.

But that leaves us with two possible modifications. Which one do we use? This question is pretty simple to answer if we know the average of original scores. This X we defined originally. If X is greater than 3 than we need to push the ratings down, so we are worried about preserving 1s and use the first modification. If X is less than 3 then we want to push scores up and are worried about preserving 5s.

So to sum it up, here is a step-by-step algorithm: 1. Compute X as average of existing scores given by 1 person. 2. if X > 3 then Vm = 1 + ( (V - 1) * 2 / ( X - 1) ) 3. if X < 3 then Vm = 5 - ( (5 - V) * 2 / ( 5 - X) )

Here Vm is a modified value of rating and V is corresponding original value of 1 to 5.

Additionally to make the system even less intrusive we might set up a margin within which we just let the rating be. For example we might be fine if the original ratings average is between 2,5 and 3,5 and we don't want to modify such ratings. And furthermore - for people whose averages are outside this margin we might want to push their average only to the edge of this acceptable range. To do this let's define this margin as m (for the 2,5 to 3,5 being acceptable m is 0.5). This will modify the algorithm a bit:

  1. Compute X as average.
  2. if X > 3 + m then Vm = 1 + ( (V - 1) * ( 2 - m ) / (X - 1) )
  3. if X < 3 - m then Vm = 5 - ( (5 - V) * ( 2 -- m ) / (5 - X) )
  4. Othervise Vm = V

Please not that in the second we still subtract m from 2. This is because we are inverting the scores by subtracting them from 5...

Phew...

The math class is now over.

So what do you think about this system? Do we need it? Will it do more harm than good? Is it too complex to implement?

If you ask me, I think the best way to test this system would be to run it along some existing data and see what effect it has on the final scores. And I can even volunteer to write a set of DB queries computing those modified averages if I get access to a table with ratings given. I don't even need to have the people/game names for it (I would require some unique IDs to replace them though - to be able to tell which ratings were given by the same person... but I guess there are such id already in place...)

Maze Crawler 0.5 published

https://static.jam.vg/raw/8e3/2/z/edfc.png

I have finally finished overhauling the rules of my LD40 entry

The game now features a character model. Which even has some ~~(still crappy)~~ animations.

Also in an attempt to make player better experience that the maze changes as the keys are collected, the player now can only carry one key at a time and it needs to be delivered to corresponding lock (presented as a circle of ghostly images of this key) before new one can be picked up.

Also the blockages will now activate only as player approaches.

Please have look and tell me if that is a step in the right direction.

The link to download is on the game page. There is currently only Windows (32) version available of the post LD version. If this is a dealbreaker for you - please let me know in the comments and I can provide alternative builds.

LD 41

I'm IN

For the 5th time I’m going to take part.

Kind of starting to feel like a Veteran here. :)

Anyway the toolbelt is same as before: - Engine - Unity - Editor - Visual Studio Community 2017 - 3D - Blender - 2D - Krita, Paint.net, MSPaint. - Audio - fail. :)

Since the last entry I spent quite some time improving my 3D skills in terms of rigging/animating and texturing a little bit. Hopefully it will be enough for me to NOT try using 3D graphics this time around. :)

Also this time I will be (again) trying to aim for a higher Fun score… But realistically I just hope not to fall for overscoping (again).

Themes for the THEME GOD!!!

I'm done with the slaughter!

Not as harsh as some, but still:

SlaughterVotes.PNG

I know this might sound a tad wierd...

But if someone is following me - let's be friends!

I'm not the most sociable person in the world, and I still want to make some friends.

So if there are any people following me, please let me know and I will follow you back.

Did you ever get a feeling...

... that your project is a tiny bit overscoped?

I think if it's halfway through the event and I don't have a palyable prototype ready, that a pretty bad sign.

Oh well...

Most likely this will mean that I don't have time to polish graphicks/sountds/effects...

Though I am really determined to get a minimal Playable version ready before I go to sleep...

I made it!!! X_X

The Battleship Crusher is now published! YAY!!!

Developing was a BLAST. However I never though that programming Match3 is so... nontrivial. :) But I am proud to make it work!

Unfortunately, a lot of things were left out of scope:

  • --Traditionally-- the sounds didn't make it.

  • The enemy variety is nonexistant. There is only one enemy type... though they might give you hell if there is a number of them - the targeting AI is pretty smart.

  • The UI is... less than I imagined.

Anyway, the time is up. The game is playable (and hopefully enjoyable) so here we go!

Early Post Mortem.

So the rushed development is over. The game is published (add link) and I had some sleep. Though frankly 4 hours is hardly enough after such sprint.

There will be a separate post mortem for this LD participation after the ratings are here, but for now I wanted to look at the development process and share some thought on it.

Theme Selection: The theme selection was a pretty heated, with one of the Final Round Themes. And surprisingly this theme was the winner. I Guess this is a clear example of “Any publicity is good publicity”. Pretty sure the heated debates drew more attention to this Theme than it would normally have had. And some of the “Trolly” users upvoted it just to spite everyone complaining in advance.

Personally, I don’t think this was the best Theme to have. It definitely fosters many unusual game ideas, as no usual idea will fit the Theme by its definition. At best you need a pair of usual game ideas working in pair. So in terms of game diversity I think this will be one of the Better LDs. However, to contribute to this diversity you have to kind of Embrace the Madness. You have to let your ideas run wild, while still not over-scoping. And it takes quite a skill to pull that off. So in terms of submission rate, I think this LD will end up on the lower side.

The Concept - Anyway, back to my development process. After seeing the Theme I started brainstorming and after some time I got this idea of dual game, when you have to simultaneously pilot a spaceship and playing Match3 that would work together. And the interlinking is done in a pretty blant way - Matching tokens in Match3 give you shield and weapon charge. This was an initial concept and a went ahead from there.

During development some other ideas arised (like losing bits of Match3 playboard when ship gets hit without shields, or having homing missiles in your arsenal), and more appeared, but didn’t make it fully into the game (like engines also requiring fuel, with ship losing speed and maneuverability if fuel is low. Or spending XP to upgrade your ship.

This dual play was obviously pretty complex, so early in development a decision was made to deliberately split controls with all ship piloting being done using keyboard and playing Match3 using only mouse. This way a game might be played as an asymmetric couch co-op of sort with one pilot focusing on piloting and the other focusing on “maintaining the ship”.

But just in case someone would play alone, some controls were made to work as “Autopilot” of sort. For example automatic shooting at designated target once it is in range. But not all of those design decisions turned out to be good. For example ship heading system would probably been better just letting you rotate the ship directly instead of you controlling the heading, which the ship will gradually turn towards.

Execution - Programming Match3 turned out to be a much more challenging than I anticipated. The algorithm of finding matched tokens had to go through 3 iterations, and the final one still didn’t give me support for spawning “Special” tokens (though you do get much better output if you match more than 3 tokens). It took me half of the first day and a portion of the second day to get this working, so a lot of other things had to be cut.

For example the UI. Technically I did make some UI for the game, including - never seen before - ingame “How to play” thingie… But a lot of stuff didn’t make it because I didn’t have enough time. For example a timer showing the time till new enemies will arrive and rough direction where to expect them from. Or a counter to show missiles. And the current target marker is not the best. I planned to put a marker on all enemies showing their HP (if below 100%) and if the enemy is offscreen - to show an arrow at the edge… But I just didn’t have enough time for all this. If it wasn’t for the need to be in the office on monday, I might have used the third day to polish the game a bit more, but I’m not a fulltime game developer… yet.

And the usual victim of the time deficit are the sounds. I have tested waters with LMMS before the event a little bit, so I wanted to add at least some beats, but… there were more important things to be added, and the time ran out too soon.

I was able to create some interesting death animations and explosions though. Pretty happy with how they turned out to work.

Another thing that made me pretty prout was the enemy targeting AI. It will calculate if it can hit you assuming you keep your current velocity. And this means that unless you are constantly making evasive maneuvers you are likely to get a lot of hits. I wanted to nerf it bit, by introducing some scatter to this targeting, but in the result, when a lot of enemies were shooting at you (due to my laziness all enemies spawned in one wave will fire simultaneously in volleys) the scatter only means that the volley is spreading wide, making it hellishly hard to dodge. So I kept their shooting spot on, meaning you are likely to either evade all bullets… or catch them like pokemons…

Surprisingly homing missile AI using similar core principle is… less effective. But maybe I have some bug in them. Plus this inaccuracy means you have to be more strategic when to launch them. So I didn’t feel the urge to fix them.

Enemy spawning is… a bit mixed. On one hand the core system for spawning is working well. Basically every wave has a “budget” of points to spend on enemy ships. And each enemy template has a cost associated to it, and a timestamp, prohibiting this enemy from being spawn before specific amount of seconds into the game. And each next wave having bigger budget than the former.

But for some reason, the enemies spawn really close to each other. And I literally had no time to balance the difficulty curve, so my minute 3 the game turns into a hell with my own record is being able to survive 4:35 (playing in “2 player mode” with my wife)...

Deployment - I have traditionally published the executables using Google Drive, but this time I have all 3 standalone platforms covered (though I only confirmed the build working on Windows… I don’t have Mac or Linux…)

But on top of this finally itch.io allowed me to publish a game on it! So in addition to standalone builds I have HTML5 build published!

Also I have hilariously found a bug in the game that would break the second game starting (like Start Game -> Lose Game -> Start another game -> it breaks!) after I published initial builds, so I had to recompile all versions during “Submission hour”).


In Conclusion I am definitely getting better. A year ago I would definitely not have been able to pull off something like this. True - a lot of stuff wasn’t done in the timeframe, meaning I have over-scoped my capabilities still, but at least all the stuff that ended up not implemented was... not critical.

I will look into continuing developing this game “Post-jam”, but I am currently busy with “Maze Crawler” and have plenty to do for it, so I wouldn’t bet on having a lot of time to polish second game at the same time.

Will be looking forward to the rating part now!

LD 42

I'm in.

So excited to take part again. Wonder what will the Theme be. :)

My Tools are (as usual): - Unity - Blender - Krita / Paint.net

I will try to get something done in terms of music, but... most likely it's not going to be a thing still. :)

Let's have FUN!

Am I gonna make it?

It looks like I might not be able to hit 48 hours mark this time.

I blame the fact that my first game idea turned out to be unimplementable. And wasted me over a day.

Still going to finish the game, but will likely publish it as a Jam instead of Compo.

:sob:

Room Tetris Post mortem (Priliminary)

Ah... The new Ludum dare crawled in so unexpectedly. :smile:

I didn't even finish the slaughter this time round. But I was eager to take part. I even had an idea to make a livestream sort of with Theme announcement. (Unfortunately the stream died at the announcement time as my OBS seem to have a thing with opening new browser windows while streaming...)

When I originally saw the theme I thought of a concept of a hosting service tycoon game where you have to manage a company that provides hosting service for videos or other content. Basically you have to maintain some servers making sure they don't run out of disk space, or bandwidth, and don't die taking all the user data with them. And them the server themselves take up room in your "office" you you eventually run out of srver slots and need to expand the office.

And to get this all running I had an idea to have a... kind of real world simulation under the hood, where the game would actually spawn and track entities, like ContentCreators, and viewers, have them like or dislike each other, ragequit or trend... (Yes, I attempted to dig into ECS...) but when on Sunday Morning I finally had a prototype with two entities running alongside each other, they would... not drop the game FPS as they were handled in separate threads, but they would have had cycles of a few seconds, meaning the simulation would not be accurate enough.

And on top of this I realized that the player does not have any agency over how those entities interact, making all this hard work... basically produce the same result any RNG would... So I rage-ditched this idea and started working on a new one.

The "little" problem was the fact that there were only circa 14 hours left to compo deadline. So I buckled up and started working.

A new concept was born pretty quickly. Putting a lot of stuff into a room. So I opened MsPaint and started blocking this idea out. I drew a contour of a room, and added a couple of windows in it. This brought up a question - how do we use those windows in a game? And to answer this a concept was born to restrict placement of items so windows are not blocked. Then I drew a path across the room, connecting the windows and the door, and decided to declare it unblockable as well. And the rest of the space was broken int a set of tetris-like blocks.

After looking at this allocation for a bit I decided to make sure all items are touching the path. Rearranged some blocks to make this condition true and this is how the game concept was born.

Programming wise the game turned out to be pretty simple. I didn't create a tile table in memory, instead the tiles were game objects in world space. The items had a set of control spots that ray-traced straight down to check if there is a tile, and if so - is it occupied.

The items themselves were also not spawned at runtime (though it may seem so). They were actually created in the gameworld, and are onlu enabled as objects when you pickthem from the list. (And it is actually the list items a that are spawned at runtime. Basically every item on Start creates a list item, and hides itself. This was an uncomfortably coding-light approach for me to take. But I really had no time to spare. So I threw together what was working and ran with it.

They I went to creating 3D assets. And over the past few attempts I can really tell that I am getting a hang of it. :smile: Not only was I able to create some graphical assets that were... kind of solid, but I also managed to texture them. Nothing fancy like normal texturing I tied for MazeCrawler, but there were a few handpainted textures, and one generated texture of wood I used for... basically everything.

The first big assed was the room, and UV unwrapping of it was... a nightmare to be honest. And when afer having the asset created in blender initially I found out that I managed to not save the texture image, I felt... kind of relieved that the UV maps were intact. However when I threw the room into the scene, I realized that you are supposed to see something through the windows and the door. The windows were easy - just a big green plane to emulate the grass did the trick. Door was a bit trickier though. But the solution gave itself away pretty easily. I just cloned the doo, rotated it 180 degrees, and slapped it door to door so you could see through the door another room. :smile:

Then I started making items. I started with a couple big ones like the Fridge, and Wardrobe. Then made a pile of boxes as one mesh... and realized that I am not going to do the unwrapping for them if I am to make the game on time... though the time was running really short by that time. Instead I opted out to make a single box (barrel, cardboard box, and a plank) as separate items with shapes simple enough to unwrap. Then bade blender generate a wooden texture for me, then used texture paint to make portions of this generated texture lighter or darker, and started unwrapping all items onto one texture atlas. This way I had only a few materials used for all items on the scene. (5 to be exact). Ans slightly adjusting the positions of UVs of different sides of the box, and their scales, helped to up the variety of wooden patterns. So definitelly this is a tick to remember for future.

And then I looked at the split of the tetris blocks, and started creating piles of objects to fill them in. I started by setting up quite a few unique ones, but then ended up just duplicating some of them 2 or 3 times. Not because I was running out of time (by that point I was 2 hours overdue for Compo anyway) but because I was getting sleepy, and I had to go to work on monday.

Summary:

Well... No music or sounds again. Which is getting a pretty bad trend for me now. Next time I might even start by making some sounds, and center the game around them... ((Though this is probably a very bad idea...))

However the game turned out to be... not solid. It is still mssing some important bits. For example I wanted to show a "Waifu picture" with a speech ballon commenting on your actions, but... just didn't have enough time to draw the portrait, or program conditions for them to appear. The UI is also only unity basic. And the screen width optimisation is... nowhere to be found. I only hope that people will not try to play it on a screen too narrow for it to be playable. :smile:

But I am rally proud of myself for basically making a game in just under 20 hours. Yes I got a bit exhausted by this, and getting yourself into a corner to them heroically get out of it is usually not considered something to be proud of, but I did manage to fend off the temptation to give up and not finish a game.

Anyway, I hope you enjoyed reading it an maybe even found something useful of it.

Wowing at the Results

Wow. Just Wow.

I was hoping to see some improvement in game results here in some areas, but... this? Just to make things a bit more clear, here are the numbers from last 4 entries:

           39      40      41      42

Overall: 3 > 2.909 > 2.904 > 3

Fun: 2.767 > 2.606 > 2.635 > 2.727

Innovation: 3.267 > 3 > 2.981 > 3.076

Theme: 3.633 > 3.03 > 3.68 > 4.076

Graphics: 2.833 > 2.924 > 2.442 > 3.258

Audio: 2.214 > NA > 1.235 > 1.423

Humor: 2.346 > 1.75 > 1.457 > 2.383

Mood: 2.519 > 2.55 > 1.72 > 2.581

All the results are better than the last entry and in 5 categories out of 8 the results are best overall (or tied for best)

This, considering the game was developed in under 1 day is amazing. :smiley:

Now to analize the results by category:

Fun Well... Yes, I am not your point of reference for fast-paced and egaging thrilling games. I am more of a puzzle game creator, so the Fun level is not really different across the timeline. Still it is good to see the rating bump up a little.

Innovation This result actually surprized me. And the timeline of it surprizes me even more. I do like to invent and script new mechanics, and think up some new ways to play, but... it almost looks like the more I try, the more people get confused by the game and the less rating I recieve. And hilariously enough the best rating I got by building a game around a well-known logical puzzle (Bridge and Candle... though a lot of people confused it for Wolf-Goat-Cabbage...)

Theme is my best category so far. Never dipped below 3, and now... Man. 122th place in JAM category... If I didn't miss the Compo dedline this could have bun my first ticket to Top100 club. :smile: Anyway my approach of not trying too hard to twist the theme so the game stands out seem to work.

Graphics I was hoping to get a good rating here, and I got it. Which I am really happy about since this game challenge for me was to create textures. And seeing the rating soar up, I think is a clear indication that I got them right!

Audio Well... LD 39 is the only entry on the list where I had ANY sounds. So it is totally unsurprising to see this rating low ((if you wonder why I keep it enabled, this is so people who played my game could get more "ratings given" and thus more exposure for their games)). However I have to point out that absense of sounds in this game seems to be less annoying than in my previous entry. :smile:

Humor This... is not a category I put a lot of effort into, but since I don't have the most engaging gameplay to present, I tend to lighten the mood, by adding some jokes and references here and there. This time it were the names of the piles you had to put into the room.

Mood Honestly, I don't know how to aim for good mood in a game, as it is really subjective. However it looks like the games that get a good rating here are the games that try to... convey some mood.

And this concludes my, not so short, analysis of the game results.

Great thank you to everyone who played and rated my game! And to everyone who would like to check it out in the future - please be my guest.

And I will see you next Ludum dare.

PS: Oh, and is anyone checked out the Boxes I had created for the game and want to use them, in any of your games - feel free to do so. I am not good with licensing stuff, so I would be glad if anyone could help me out with some advice in this regard, but any 3D assets I have created for any LD (up to date) and published in source code for my games - is free to use for any purpose you might have for it.

LD 43

Mandatory "I'm In post"

7th time? Wow...

Even though the first two attempts I didn't publish the game (even though both time the game was completed. Just didn't fit the deadline).

I kind of start feeling old at this point.

Will be using the same tool belt as always (Yes, I am a bit conservative).

  • Engine - Unity
  • Coding - C# via Visual Studio Community.
  • 3D Graphics - Blender
  • 2D Graphics - Krita / Paint.Net
  • Audio - erm... well... technically I intend to use BFXR and Audacity and maybe Audiotool. But seriously I only had one game which featured ANY sounds. So i don't have high hopes for audio part of the game to be fancy. Or to be at all.

Anyway, let's have tons of fun guys!

Well... that's going to be... interesting.

I am not really sure why I am writing this here... guess it's just too much to hold in myself...

Just today, literally one day before Ludum Dare I became officially unemployed. Can't say it was totally unexpected, but I still wasn't expecting this to happen this abruptly. :sob:

Well... at least I'll have more time to pursue my hobby project now.

Price of Power Post Mortem

Price of Power is now officially over 20 votes in all relevant categories, so I guess it is time to sit back and reflect on how things gone this time around.

Pre-Jam As usual I started being hyped up by the incoming jam a month in advance. Though again I couldn't scrape enough time to go through the slaughtering process - lots of thing to do in day job. And then, out of the blue exactly on the day Jam starts I... lost the job. Which was (and still is) a huge thing, and definitely got to me, but I just decided to shove the gravity of this situation away and focus on the Jam as much as I can. And probably this allowed me to get through the worst part of this situation intact. So, thank you, LD for helping me keep myself together.

Theme Selection and initial Ideas I never worry too much about the theme selection, but this time it looks like we go a Theme most of people liked. And I wasn't disappointed with it as well. The two original ideas I had for the Theme were - remake of "NetStorm" and a card game with important and inevitable sacrifice mechanic. I have contemplated the first idea for a long time, but in the end I decided that it would definitely be over scoped for developing solo. The bridge-collapsing mechanic alone would raise quite a few questions I am not ready to answer. And I really didn't remember the mechanics of this game all that well, so while it would definitely have been a good idea to pay homage to an awesome game of the old, I couldn't pull it off. So Card sacrificing came it was from then on.

Process - Day1 After contemplating over the idea of a card game for a bit I drafted a set of rules that I envisioned as fun (in my warped perception of "fun" anyway...) and started... modelling in Blender. It is probably a good place to notice that the workstation I had available to me through most of the process was a 2010 macBook air... which had blender installed, but no 2D editors I would be familiar with. So I spent about 1,5 hour playing around with Blender sculpting mode and generated textures to get a picture I could use for card background. Which I basically ended up never using as cards are basically face up all the time, but at least I got what I wanted.

Making a table was a cakewalk after this, but the first time I made it I forgot to save the texture image and had to start it over again. Though this was probably a good thing as I liked the second iteration a bit more...

Then I added the model into Unity and started playing with adding contents to the card. And here working on a rather small screen played another prank on me, as I ended up adding quite a large info elements on the cards. All those circles and number could have been way smaller in reality, but when I saw them in my tiny editor windw I though that making them small would render them unreadable, and so the card ended up being a little too cluttered. Though it looks I managed to pull off normal conventions of card game layout and the meaning of all those numbers and colours were clear enough.

After I got one card done, I multiplied it a few times and started hacking on the script that would arrange several cards into a "Hand". The basic idea was to have 2 transforms, and a script that would trace a path from one transform to another using cubic spline and then arrange cards from the array into positions along this path.

This being done I decided to work on some subtle UI element - Highlighting. Basically when you mouse over a card a faint outline would appear around it. The way I though this should work is to have a secondary camera that would use a simple shader to render everything. Basically check if an object has a specific color attribute, and render only those where this color is not transparent, using this color to render all pixels. This camera outputs to a render texture which is then used by an after effect that checks if the helper texture is not transparent, then the main camera pixel is unchanged. If the helper texture is transparent on this pixel, it would modify the main camera pixel by a Gaussian-blurred helper texture color. So basically the highlighted object is displayed as is, but pixels around it get a halo of a sort.

The initial script was buggy as I basically messed up x and y offset amounts (this got fixed) and the halo ended up being too faint (which I didn't fixe eventually even though it is probably just a number I should multiply the blurred color by...) so it was a bit hard to tell the color of the highlight, but I was still pretty happy with how it turned out. All the shaders involved can be found in the source code, if you are interested.

And at that point day 1 basically ended. It wasn't really late, but I felt kind of tired and decided to call this a day.

Process - Day2 Day 2 started and I didn't have any game mechanics coded. So I started panicking a bit. But I got myself together and started working on... even more general stuff that wasn't actually related to the game rules I had drafted on paper. :) Namely I started working on the mechanic to pick a card from hand and drag it to the table. The idea to separate card graphic from the root game object is nothing new, and with Blender and Unity working in different Axis orientations, this is kind of a necessity, but here I got the idea that I don't have to keep them together. Basically the card graphic can be moved wherever I need, while the card object is still in hand (so I don't rearrange other cards until the card actually leaves hand by being played or sacrificed.

I have iterated on this idea for some time and the final pattern was... pretty trivial actually. Basically a card has a position and rotation used as an override for graphic position, and a flag to tell the script if the card graphic should move to override position or to main object position (and moving is done by lerping for smoother card movements on screen).

After this I started working on sacrificing mechanic. And here I got the idea of showing actual mana as tokens which would move across the table to give even more actual board game feel. And on the other hand I made the sacrificing area into something tat looks like fire to throw this feel out the window. :smile: By the way figuring out how to control the particle effects from script was pretty fun.

When the cards could be sacrificed and played, I started making enemies, using the same card texture (with added tint) as a base, removing some elements, and replacing other with something specific to how enemies should behave. Then I started working on the enemy target selection AI. To animate enemy attacks I created the projectiles with particle effects. Then player cards abilities, at which point I once again came to a point of exhaustion, but as I didn't need to go to work on Monday, I decided to call this a day again and went to bed.

Process - Day3 With most of mechanics done I finally could get something that could have been played with one hand and 2 enemy cards. I polished up the projectile effects to something I liked a bit more, then added burning effects to cards upon their death, and... remembered that the game was actually supposed to give you more cards when a new turn starts. And that excess mana is supposed to burn on turn ending. So I had my hands full with scripting again. I really like how my Deck class turned up. Basically it has 2 lists to store cards. One is Draw pile from which the cards would be picked, and the other is scrap pile to which cards that leave the game would be added. And a boolean flag that determines which of the lists serve which function at this moment. If a Draw call is made and there are no cards in current draw pile, the flag is flipped and all functions run as normal ((with an extra safety check to make sure that at least one card is available in new draw pile - former scrap pile)).

Having finished this I realised that player HP bar is now covering cards sacrifice values, so I had to reposition camera and hand to keep all the information visible. And it is at this point that a "right click to inspect card" mechanic was added to UI.

And now it was time to populate the deck with actual cards... at which point I realised that I have no idea how to assign values... After rushing to ideas for probably an hour I ended up with 4 basic archetypes for cards, and then each archetype having 9 variations with different health/damage types and costs (with costs staying mostly the same amounts but different color combinations) which were assigned basically at random. Yes, this was not the best thing in terms of game balance, but time was running short by now. Having figured player cards I started thinking up about enemy cards, and my original idea was to have a deck of enemy cards from which you have to draw some and fight them on the table. But I couldn't think of an interesting way to ensure that a challenging combination would appear, so I opted out to make one combination... which hilariously ended up not being all than challenging, unless you get really unlucky with card draws...

And thus I started the process of building the executables... for which purpose I moved to my Windows10 desktop workstation. I used this access to actual 2D editor I am familiar with to make some sprites (Shield, Cross and Arrowhead) used on cards, and started compiling, and suddenly... game started crashing on me.

At first I though that this might be a difference in Unity versions but updating to latest version didn't fix a thing. The game was still unstable crashing after about 30 seconds of play, and taking the graphic card drive down with it. This was a disaster... which I fortunately was able to fix. Turned out the culprit was the helper texture used for the highlighting. Or rather the script that was initialising it. Basically it was set up to reinitialise the texture with correct size if the screen size was changed. But it didn't save the previous size, so it was effectively reinitialising the texture every frame. And this was not healthy for the game. My old macBook was running a pretty low framerate so it wasn't an issue as it had time to clean up now unused instances of the textures. But a more powerful desktop ran itself out of memory pretty fast. Thankfully the but was fixed and I was able to rebuild all versions and upload them to itch.io with about 2 hours to spare before Jam ends.

Woot! That was a blast!

What went right - Creating assets. Even though I had some setbacks (like I forgot to save the texture, or I forgot to use the card with rounded corners...) I was pretty happy with my ability to create assets for the game. - Multiple experiments Usually I manage to only pull off one thing in a game that I don't immediately know how to do, and need to experiment and iterate. This time I managed to pull off quite a few of those, starting with highlight effects, to animations of particle effects and sequences where next action is only started once previous one is complete. - Scoping - I can't say I didn't have to drop features from the game... for example originally the draw mechanic was supposed to give you some cards face down, and let you pick as many as you need to have 6 in your hand, while seeing only the sacrifice values... but overall the game turned out basically as I imagined it initially. So Yay! - Animations - I really like how the animations of cards, tokens and attacks turned out to look. Those are not Hearthstone of course, but they were by far the most polished animations I had created in a game by now.

What wend wrong - Game balance - Or lack thereof. The game turned out to have some strategic depth, and takes some effort not to mess yourself up by getting excess mana and burning yourself to death, but once you figure out the basics the challenge is just not there. Another rules for enemy are required. Maybe I do need to have the enemy deck and let it draw more cards from this deck as play goes on, but reduce the timeouts for enemy card activations. - Card layout - As mentioned above it is too cluttered and has 3 blocks which are a set of 3 coloured circles with numbers... so I had to write a lengthy manual and I feel like it deterred some players from playing, and others who played the game without reading the manual ended up confused and enjoying the game less than they could have. - Tutorial - As a continuation from the previous item, a tutorial level within the game itself, to explain the basics of the game could really help. but there was none... - Sounds - as usual there were none. Though probably I could have added some pew-pew sounds on card attacks and Whooosh on cards burning, but I was a little tired by the time I got to desktop, so I skipped them.

Thank you for reading, and I hope to see you next jam!

PS: If you want me to play your game - add a comment an I will check it out!

Results and reflections.

Okay, so results are here. :smile:

And to be hones I am a bit surprised. Some scores scores ended up being lower than I expected, but some (if only marginally) better than my previous result even though I expected them to tank. So I will try to do some reflection on each individual score.

Overall 3.11 (vs 3.0 in LD42). This is the one result I expected to decrease, but it ended up improving. It's not like I though that the game was bad, but I got quite a handful of comments of people who got confused and didn't figure out how to play the game, and I didn't expect to get high overall scores. Also there were some things that I didn't finish, which would have made the game more playable - like an arrow being drawn when you select an attack and select target. Or a UI counter to show your current number of mana available as stacks of tokens were not always easy to read.

Fun 2.88 (vs 2.77 in LD39). Again - an unexpected increase, as a lot of people ended up not having fun, unfortunatelly. But I am still glad it is here. Most likely this and Overall encrease is due to some polish - like particle effects, and animations (which were simply lerping, but looked great).

Innovation 3.27 (same as LD39). At a glance I felt like this score was low, but apparently it was about the same as my best score so far. So it was Ok, i guess. Still the Innovation (and theme) are my Target scores, so I was hoping for more. :rolling_eyes:

Theme 3.5 (vs 4.08 in LD42) Again - I was hoping for a better score here. And in fact put of last 5 entries this score would be second to lowest, but on the other hand the score is also the highest of all categories so... I don't know. Guess this is just an indication that my games are becoming more consistent across the board, so this one aspect no longer stands out that much. So I will count it as a good sign.

Graphics 2.85 (vs 3.26 in LD42) This score is my most disappointing one. I put quite a lot of effort into making visuals for the game, but got the result way worse than last time. Then again while I have developed some pretty nice things, some aspects were missing (like the floor under the table). And the card design was not pretty. But at least I have learned some pretty important things while working on those graphics and next time I will likely do even better.

Audio 1.71 (vs 1.42 in LD42) Well, it looks like I managed to pull off a better quality of lack of sounds this time :sweat_smile: But yeah, there were no sounds created for the game and the only reason I didn't opt out of this category is to let people get more "coolness"points for their games by giving me a rating here. Even if it's just 1.

Humour 2.29 (vs 2.34 in LD39) Considering the only entry that beat my current score was the only one I actually did put effort into adding "funniness"into in form of pop-culture references, this score wasn't bad at all. Still the only reason I kept it on was same as Audio. So moving on.

Mood 2.44 (vs 2.58 in LD42) Again this is a perry low score compared with other game, but that was to be expected as I didn't go for any specific mood. Except for being confused by game not being obvious to jump into apparently. :smile:

So all in all - I am content with the results. For about half of the categories I got the best result to date. So this is definitely a sign of improvement, but still there are way to improve. A lot.

Anyway - I hope to see you all next LD, and make an even better game then. :smiley:

LD 44

In preparation to the JAM

First of all - I am not sure I can pull this one off.

I happen to be traveling to Luxembourg at this exact weekend, so I might not have enought time to devote to actual development. Maybe I will put together somethin super-simple, but no promises.

On the other hand I have recently upped my programming skills, and learned a few ways how Unity can be used to develop games other than being Rendering and Phisicsing engine. So putting together something playable should be simpler for me now. Hopefully :sweat_smile:

Theme voting... I don't remember if there was another time where I would only upvote one theme, but here it is now.

But I am not going to get into "Theme suxx" rage. First of all - it wouldn't change anything, except spoil my (and potentially someone else's) mood, and this would be bad. Secondly - any theme would be workable. There is no such thing as good or bad theme.

So... Happy jamming, everyone! Let's have a lot of fun making and playing those games!

Didn't make it

I really wanted to make the game within the Compo deadline this time and... this didn't happen.

Technically I can use the third day and publish in Jam eventually, but I don't want to take this day away from my family too. So unless I manage to pull it off in the morning while everyone is still sleeping, this is it for me.