HuvaaKoodia

HuvaaKoodia #138

Joined 4 months ago

Bio

Entries

Latest posts

HuvaaKoodia

Hello you, I’m HuvaaKoodia; we might have exchanged words in the past! Didn’t have time for Kajam last time (and probably not this time either unfortunately) due to putting together my plan for this year. In short, I’m going independent (Exciting times!) making multiple 2 month solo project from scratch. Mostly for fun, maybe for profit?

Here's the devlog at TigSource for the first project.

Just so that this doesn’t become all about self promotion, I’d be interested in hearing your opinions on interactive digital media. I’ve tried to explain it here the best I can, yet the only way to see if it sticks is to throw it at people. Written from a developer angle, keep that in mind.

Cheers.

HuvaaKoodia

I made a simple room based level generator for Infested Zone. It is heavily inspired by the generator in Spelunky.
Here's how it ticks.

The generator

1. Create a room database

In the handy dandy CSV format. The first line designates the type of the room, which sides it contain doors (openings) on and if it can be rotated or not.

Room Base 1 1 0 0 r
w,w,w,w,.,.,w,w,w,w
w,l,w,w,.,.,w,w,l,w
w,w,.,.,.,.,.,.,w,w
w,w,.,.,.,.,.,.,w,w
w,w,.,.,.,.,.,.,.,.
w,w,.,.,.,.,.,.,.,.
w,w,.,.,.,.,.,.,w,w
w,w,.,.,.,.,.,.,w,w
w,l,w,w,w,w,w,w,l,w
w,w,w,w,w,w,w,w,w,w

Extremely easy to setup in LibreOffice Calc with conditional formatting,

Likewise easy to implement in Unity. Just read the file and split lines with comma as the separator.

(I'm not going to bore you with code)

2. Create a 5x5 grid

A multidimentional int array, nothing else is needed.

3. Set one of the corners as the goal

Just pick a random corner. No safeguards here.

4. Find a valid path from the center to the goal using random walk

Random walk: pick a random direction, keep track of positions already visited, back up if surrounded by walls or visited positions, stop if goal reached otherwise repeat. A recursive function works well here.

This results in all sorts of paths. At worst the whole grid is filled, but usually gives a pretty straight forward path. The random walk can be skewed towards the goal position by weighting the direction choosing part (I'm not doing this as you can see in the gif below)

5. Add a valid sequence of rooms to the path

Making sure the doors match. Other than that the rooms are completely random. This is where earmarking each room with its doors comes to great use.

6. Add random rooms to other positions.

The randomization can be weighted or otherwise limited here if the results looks silly. Rooms with less doors seem to work pretty well as they don't mess too much with the path.

Done deal!

Conclusion

The room database is the saving grace here. No need to worry about invalid connections or silly shapes as the rooms are authored by a human designer. Rotating them adds a surprising about of variation too and the FOV system hides the grid like shape of the level pretty well.

HuvaaKoodia

Finished early. Sure enough could spend more time on polish, but other projects are awaiting so better cut it here.

Try it out (no WebGL due to unity issues, unfortunately)

HuvaaKoodia

Here's the repo for the metaball effect.

Audio is more or less in at the moment; I've only started on graphics. Should be able to hack something passable together this week.

HuvaaKoodia

I needed a break from my main projects and there were a few ideas in the back of my head I've been wanting to try out. Here's the result so far (needlessly big gif, after the jump.)

Exploring some cool tech:

  • Procedural generation (a super simple room based deal)
  • Interaction system for chain reactions (explosions for now, more on this later)
  • Completely component based enemy behaviours (makes adding variations easy)
  • Neat field of view system (a quick 2D version of this project).

Coming along. Not put much effort into graphics yet as you can see.

HuvaaKoodia

The problem

The jam was good, but the rating system left me cold. I have a total of three issues with it; let's see if you can spot them.

10
9
8
7
6
5
4
3
2
1

It is obvious right? Ok, I'll give you the first one for free: there are no descriptive words to go with the numbers. Let's fix that.

10 The best ever
9 Amazing
8 Great
7 Good
6 Above average
5 Below average
4 Bad
3 Terrible
2 Abysmal
1 The worst ever

Better. Now everyone has similar expectations of each grade, more so than before. Do keep in mind this is just an example, there are other fitting descriptions and they could even change based on each category.

Second problem? There is no average! In a big jam there are a whole lot of average entries, so-so stuff. With this rating system I'll have to score them slightly better or slightly worse every time. How annoying.

The last problem is more personal than the prior two. In my opinion a scale of 10 has too much granularity. What is the difference between Amazing and Great? How about Terrible and Abysmal? It is not clear and as such we can expect different people to use these grades in fuzzy ways, which muddles the results. In the best case scenario the grade should reflect the (hopefully written) opinions of each reviewer exactly, not close enough.

Suggestions

In light of the prior explanations some propositions are in order. The first one is obvious, simply introduce descriptive words and an average grade to the current system. I'd be fine with that. Next, two more ideas.

7-grade, zero centered model

+3 Amazing
+2 Good
+1 Above average
0 Average
-1 Below average
-2 Bad
-3 Terrible

The old 5-grade model

5 Amazing
4 Good
3 Average
2 Bad
1 Terrible

Conclusions

I rate the rating system 2 out of 5, bad.

Cheers

HuvaaKoodia

So the ratings are out and I don't exactly agree on the results. My top overall ratings, for those interested:

Solo

Chrysopoeia (9.00)
The Hermetic Order Of Alchemists (8.00)
Mixium (8.00)
Sil the Alchemist (8.00)
The Six Keys to the Philosopher's Stone (8.00)

Three puzzles in the top 5, what has befallen me?

Team

The Wanderer (7.00)
Modern Alchemy (7.00)
Transformist (7.00)

Considerably lower averate score for team entries this time. There were only 15 of them, which might explain it.

Other?

But this is not about the top titles, you see I always play and comment on as many entries as I can in a jam (this time all of the 58!) For me the best projects are those that don't simply make me think critically, but also make me realize something or remind me of an interesting design.

This time there was one of those, the last title I played, an unranked, fake themed entry:

Redshirt's Escape

So what did I realize? Even exploring an empty, abandoned complex can be exciting with a ticking clock of impending doom in the background. Also reminded me of an older design I haven't gotten to prototyping yet, concerning a rogue AI in a spacestation, so that's good.

Great jam, worth repeating.

HuvaaKoodia

Should have written this a few days ago, but I simply forgot.

The idea

I read the theme, then the real theme and immediately looked up the history of alchemy on wikipedia, interesting stuff. Then moved on to other resources (mostly on Scribd), more interesting stuff! Somewhere here the idea of an interactive text based story started to take form and then it clicked. Better run with it.

The prose

Wrote 15 pages worth of design and prose before implementing anything. It all came out with relative ease. No stress, no fuss, just writing for 10 hours worth.

The code

Here's why I was feeling so sure about the implementation. I'd been working on another text based project recently and that system, I reckoned, would fit well here too. It did! Had minor issues, but it was mostly smooth sailing (and hard work, of course). The fact that parts of the system were data driven and other parts code did annoy me quite a bit.

Release

Finished the alchemy actions last, at the beginning of the final hour! Managed to draw one quick cover image while setting up the jam and itch.io pages. It came close and there is a RL reason for it. Had to spend 6 hours away from the jam on Sunday morning.

Total effective working hours: 43

Post-Jam

After the jam I realized that the code part was a blessing in diguise. It is always easier to hack things together in code than in a custom data files. It took me many days (only a few hours per day, though) to port all the code logic to a completely data driven system for the post-jam project.

The project is nowhere finished, unfortunately. There are many story elements that I want to add to it and I haven't had the time to do a lot of writing yet. Now that the rating period is over I can concentrate on that some more.

Conclusion

The first interactive short story I've ever made; learned a few writing techniques. Also improved the data driven system for future projects so that's good.

A great jam as usual. I do enjoy these events a lot; the testing and commenting part is a big draw for me. I managed to try every single entry this time, taken that there were only 58 of them. I dread the jam where there are more entries than I can play in two weeks.

Will write some entry recommendations and ideas on the rating system in the up coming days.

Cheers!

HuvaaKoodia

Seems I made the only interactive short story in the whole jam! It is nice being the president of my own little exclusive club.
Managed to put in all the required pieces, yet many nice to have things were cut. I'll keep working on a post-jam version.

Try it here

HuvaaKoodia

The writing is going well, programming ok too. Although I did make some bad calls in the very beginning which are annoying me to no end at the moment. I'll persevere and refactor after the jam.

I have a feeling I won't have time to put everything in. Alchemy for one is still nothing but a mention in the intro. Sacrificed 6 hours for RL stuff which didn't help.

One day to go. Good luck everyone.