Quality submission but the game jam is over... jokes aside...
Thank you for sharing this fantastic Graphic User Interface!
Aztec_man
Creator of
Recent community posts
No worries. I was being a bit overdramatic myself.
I'd like to revisit these elements, but I'm still struggling to sort out how the logic should be.
If I were to take your implied advice on the previous comment and make the player lose when they collide with a chick (or any moving object), I expect that this will lead to frustration for the player, since they can't reliably predict ahead of time if the chick is going to move into their path on the next game step.
I'm leaning toward, if the snake doesn't eat something, it should push the thing instead... but this leads to unanswered design questions: in particular, what happens if I push object A into object B?
The one thing that would have improved this game considerably is making sure the text is readable.
The cards - totally readable - but when you have the small text at the bottom there is the issue of font size (too small), as well as the text being insufficiently contrasted to the background panel. Here you are using a partially transparent panel with a grayish color and white text. I would recommend to increase the opacity of the panel, as well as choosing contrasting values for the text versus the panel colors.
1. Why could you still play the game after there are no more eggs or chickens? We didn't set up the logic to detect that. Actually this is a valid criticism, but I don't think you need to ask why... rather as a critic you should have conviction in your opinion, or just state your observation. It feels kind of condescending to ask why... like you are implying I am a total idiot and you would like me to explain my backward logic.
2. Why weren't you punished for eating baby chicks? We rewarded it. I made that decision. You can blame me personally. Actually we debated several mechanisms [instant death, vegan-snake, pushes chicks/chickens aside]. I chose this route because it was the easiest to implement, given the other code that had been written.
3. Definitely going to change the control schema. I notice a ton of people complaining about the movement not happening smoothly... smooth movement it is!
Thanks for the feedback XD
One tiny bug (or an amusing feature)... I got to the top of the tower and lit the final fire, got the extra dash skill - which I don't fully understand, but that's okay - and then I went exploring off of the right edge. My dude fell into the darkness and presumably right off the map.
By the way, was super impressed by this submission before even realizing it was a one-person build.
Bravo!
All right, here's the wrap-up. I just want to finish by saying of course I really enjoyed your game and the quality of elegance it offers. It can be really great to think about these things as a mental exercise if nothing else.
Now wrapping up the theory I offered here... above I described a way of reframing your game as a maze... but one thing is still left out: how do we handle the remaining turtles? Well, I don't have a general solution thought up yet, but as a practical one - if you wanted to make more levels without thinking too hard - you could reuse the motif you have in the first level of releasing the remaining turtles all at the end in one move.
I'm going to imagine a slightly simpler game. Let's say in this version, the requirement that all of the little turtles get to come home is relaxed (we might leave some oh darn).
Let's now imagine the game level as a graph that we are interested in traversing. The open doors are edges. But then, let's imagine that the buttons are like another passageway... that is, instead of the red button, there is a path to 'another universe' where one thing is different... this other universe is just a copy of the graph with a new edge to represent the door we just opened. In technical jargon, we have performed something called 'graph rewriting'. Graph rewriting btw is a super profound and fascinating subject that connects to computer science, AI and biology . Now, essentially, we can just find a valid path in this new, much larger level to our destination. However, it's not immediately obvious how we actually go about solving this in practice... but one thing I start to think about - as a person solving the puzzle - is that I can visualize essentially clusters of universes, and put them into a partial ordering, and then eliminate the ones that don't make sense, eventually constructing a valid set of moves for my agent to reach the destination. As an example from your game, there is a button at the end that opens some doors... obviously we can't walk through those doors before we have pressed that button, so in essence, we can eliminate walking through the alternate universe where those doors are open from the portion of our strategy leading up to us reaching that button [or a similar button in a alternate universe]. Basically we are just solving a maze at this point.
One of the interesting ideas that pops out of this, is we can offer players more radical challenges by doing more with the graph rewrite step. Like a simple example would be one door opens but another shuts. A more complex and fascinating option would be, some of the rooms take on a new arrangement. The challenge then becomes teaching the player how to handle these more extreme puzzles.
I was actually thinking about this quite a bit this morning... like what specifically bothers me about assigning numerical values to work? I don't think we should go around assigning numbers to works of art or human beings.
It's like that old saying... "there's lies, damned lies, and statistics." It would be nice if everyone gets at least 10 ratings so they have a value of n large enough to be statistically significant... but it sort of doesn't matter.
I'll try and get you a rating soon, because I can see its something that's important to you. I sincerely hope that it is a useful reward signal.
I am likely to put off rating till the last minute and/or rate fewer games than I comment on and play.
I have been telling myself that I am grading on a curve so I need to soak in all of the data, but if I am completely honest, the numerical rating process is just not something I like to do with my time.
Enjoyed overall. I like cats. Herding cats is a cool idea.
Going to point out a bug or two:
- noticed the cats getting stuck. [navmesh issues?]
- you can give out more fish than you possess... it goes into the negative.
- whichever level is the last one (3 or 4), when you leave the vet, you still have all the cats.
- I ended up with 11 cats after starting with 30 fish... which, at 3 fish per cat, required me to go 10 fish into debt to collect them all... I imagine it would be preferred to setup the number of fish proportional to the number of cats, or to allow fish to replenish somehow within the game level. [fishmarket?]
Hey, nice game... actually to be honest I'm more than slightly annoyed at the wizards... but setting that aside...
Was trying to get past level 2. I'm fairly certain it is not possible in the current setup. It would have been though if a certain bug (eat slime -> full slime) mentioned in previous comments was still in the game... consider adding another patch of no-cost travel terrain to level 2, or possibly allowing the player to succeed on the 12th move.
To be clear, what I deduced was that it takes 16 moves (8 horizontal and vertical) to make it to the opposite corner, but the player will die on their 12th move-payment, regardless of if that move would have meant victory. So, assuming that each move is a step toward the goal, we need to have greater than 4 no-cost moves. But I could not see a path that offered a low enough cost to offer survival. Feel free to point out if I am missing something.
That was fun!
Took me a minute to get the hang of it.
A decent challenge!
Now I'm eager to try and make this type of puzzle myself - in particular I'm curious about how one would represent this mathematically (I'm imagining a directed graph for starters).
[edit: in terms of the math, it is noteworthy that there is a correspondence between edges of the graph (doors), and nodes (buttons)]
The music is hecka good. Nice job overall!
Definitely curious to know more about the learner; you mention ML agents on your game-page - did you base your work off of any example in particular? I know that Proximal Policy Optimization is the default algorithm for unity agents, so I'm guessing that is the overall model type, but curious to hear more about the process.
Hey there! I enjoy your game.
Just thought I'd share a random thought:
one of the main mechanics in my game was a real time learner based on a 'k-armed bandits' scenario. it's interesting to imagine implementing a similar technique for your game - assuming the player picks choices randomly but with a bias, you could learn the player's bias over time
Hey folks! While I don't 'get' your game... it seems really cool! If I'm not wrong, you are giving the player a huge amount of freedom to program within the game... super neat.
Two small improvements could be made:
- I accidentally clicked the fullscreen button at the bottom right, but it doesn't work at all. It seems like you should disable this (I'm guessing it's in the itch.io settings for the game)
- well this isn't a small improvement, but it would be really cool to have a proper tutorial for a game like this. I don't happen to know enough about deeper coding to make sense of the interface, but it would be really interesting to learn!
Just finished going through and fixing UI screen scaling problems for one of the first games I made in Unity - Cat Box Defender.
I imagine UI is a very common challenge for jam-games.
At risk of offering an overabundance of unsolicited advice, I'll briefly summarize the process:
- on the Canvas (container object for UI), it has a component named 'Canvas Scalar'. In the inspector, drag the slider all the way to the left (which is labeled 'width'). Set the reference resolution equal to whatever resolution is in the Game view.
- make sure each UI component is able to be moved along with the corners of the screen. To accomplish this, click a UI element and click on the graphic in the top-left of the Rect Transform component (in the inspector). This opens a little menu where you can choose where to anchor the UI element.
That's pretty much it.
As a last tip, if you have your UI elements parented (grouped in the hierarchy), you can just make the anchors work for the parent element. So you might have a few buttons in a certain corner, and you parent them to a empty object which allows you (as a dev) to drag them around or enable/disable them as a group (for convenience). In that circumstance, you only have to anchor the parent object to its corner. Just make sure the empty object isn't located somewhere really odd - it needs to be around the same position as the UI contained within it.