PyWeek 30 challenge: “Castaway”

small game - Ending notes

Posted by bukmano88 on 2020/10/12 02:30

This week was - challenging, but I got thrue after all, a bit more experienced and tougher, it was a great opportunity for me...

Add a comment

The Tide Summoner - Postmortem (plus all the diary entries I didn't make)

Posted by Cosmologicon on 2020/10/11 05:28

Here was my thought process behind this game.

"Castaway" makes me think of escaping a mysterious puzzle island, like in PyWeek 25's The Desert and The Sea. But programming walking around on ground is hard. What if you stay on the water and just travel between islands, like Wind Waker but you're stuck in the boat. Okay, but then what's to stop you from just riding off into the sea? It would be cool if that just sent you back to where you started, like the Lost Woods. You know what would do this really well? A sphere. Guess I'm making a 3d game.

So, you're on the water and we need some puzzle mechanics. Raising and lowering the water is classic. But how would that work on a tiny planet? If you raise the water everywhere, where does it come from? I guess what would be the most intuitive is raising it on one side while lowering it on the other, like a tide. So I guess you need some way to control the location of the moon.

And that was enough to start with. I'm a little surprised that someone didn't see the connection to the theme? I felt like this was one of my most overt uses of the theme. No big deal.

I enjoy puzzles where part of the challenge is figuring out what to do, but I think you have to be really careful with them in PyWeek. Judges, myself included, are likely to move on if it takes too long, which is bad if you want your entire game judged. I knew I would never be able to tweak the puzzles to the right difficulty level without play testers, so I needed an easy mode, or set of hints. I originally planned three modes: medium (the default) would not include instructions, but would include hints from the character, possibly in voiceover, (e.g. "Hmmm, those trees look dry....") Easy would have the voiceover plus the instructions, and hard would have neither. I didn't have time for voiceover, so we basically got easy and hard. But neither seemed like a good default: starting on easy would spoil some of the fun, but starting on hard runs the risk of players forgetting about easy mode and just giving up. I really like the compromise of having easy mode always available if you take a deliberate action (although I could have chosen a different key). You get a message reminding you it's available if you haven't made any progress in 60 seconds; that might have been too aggressive. You have to hold the key down instead of being a toggle so that nobody accidentally left it on and spoiled the next challenge for themselves. It's kind of weird UI, though. I guess it could just turn itself off after each challenge.

I really enjoy setting games on spheres like this. I was hoping that people wouldn't realize it was a sphere at first, and that when the camera pulled back enough to tell, it would be a big twist as you suddenly realize just how trapped you are. Commenters said the game starts out too close up, and this is why. I originally imagined the "twist" would happen at the end of Act 1, but I could tell that would really frustrate people, so I moved it up much earlier, to about 1/3 of the way into Act 1. I gave the islands suggestive and distinctive names, hoping that someone would try to map it out, and realize it was a sphere that way, before the reveal.

Judging by the comments, this completely failed. I guess most people were able to tell it was a sphere from the beginning? I wonder if there's a way to salvage it so that it actually is an impactful reveal. If not, then I definitely would start more zoomed out. I also wanted the reveal that you were moving the actual moon to be a surprise as well, which is why you can't Tab to zoom out until after you've used the Tide Summoner for one challenge. I wonder if that reveal surprised anyone.

I got a late start on the puzzle design. As late as Wednesday, I didn't really have any good way to use the changing water level, and I was considering scrapping the puzzle altogether and just making an action game. But then I thought of watering the trees and that was enough to get me unstuck. I've fallen out of the habit of thinking about my game ideas during the week before PyWeek. It definitely would have helped here. I could have used another day at the end to handle a few loose ends.

My PyWeek 17 entry Eclipsed was set on a sphere like this, and I learned from that experience that spheres are really confusing for players. I think that Mario Galaxy keeps its spherical areas manageable by having a series of small challenges on individual spheres: typically you only spend a minute or two on each one fighting a couple enemies, and you don't need to do much navigation. At any rate, because of this, I went as simple as possible. 6 islands laid out like the faces of the cube, and disks appear at one of the 8 spots corresponding to the vertices of the cube. This means that there's just not much stuff out there to keep track of, and you can find where you're going by wandering for just a little bit. I considered having you teleport from one planet to another once you complete each challenge, but decided it's more appropriate to the genre to have the world change, with objects appearing and disappearing, and the trees resetting. Fortunately the tree watering mechanic was not too hard to incorporate into the various challenges, so I could reuse the islands in multiple puzzles. I'm mostly happy with the various mechanics involving the moon, although I'm certain they could use some tweaking. The one I left out because I just couldn't get it to work was having two moons you could control separately.

A little about the graphics. The game is flat shaded. This was an early decision, made the first time I realized that if I wanted lighting then I would have to calculate normal vectors. I was concerned that flat shading would look terrible, but I think it turned out okay. The one thing that just looks bad is the player vehicle (as one commenter astutely noted). Procedural generation is apparently easier for natural objects than for vehicles. I really should have used Blender for this, but I'd already done everything else procedurally and I was worried about not getting the OBJ loader to work right, especially since I was flat shading. I did try a procedural boat-like shape at first and trust me it looked even worse. I definitely should have left myself more time for this.

I'm not really happy with my usage of PyOpenGL. I want to be off the fixed function pipeline, but I don't want to have to go all in on a library. I think I want some boilerplate shaders and example usage code that I can copy into my program and tweak as necessary. I would have liked to have written a fragment shader that would do a procedural nebula for the sky box, but I couldn't figure out how to make that work with the fixed function pipeline.

I can't believe I had some code that just happened to be a syntax error on Python 3.7 but not 3.6. What are the odds? Someone did helpfully point it out during the upload period but only with about 2 hours left so I missed it. Next time, in addition to making a post about it here, I'll ask people on Discord to test it out early.

Thank you to everyone who tried the game! Congratulations to our winners, Tee and Team E! Thank you very much to mauve for running things so smoothly, it's always a great time!

3 comments

Apart - Apart: Postmortem

Posted by Tee on 2020/10/11 01:46

Thank you for playing my game! I'm glad you enjoyed it!

Despite its flaws (I will talk about them in a bit), I'm quite proud of this one. I was worried that the puzzles might be too difficult and that would get in the way of being fun, but it sounds like it was still fun despite the difficulty. I usually don't work on my games past Pyweek but I might actually polish this one further because I want to fix the flaws in it, and I just really like this idea overall.

This main post is spoiler-free. I will post a comment with spoilers on the story and individual puzzles so that it doesn't show up when someone is scrolling through the diaries page.


Puzzle design and balancing

Puzzles are always hard to balance. As a designer, you're the one who made it, so the solution seems obvious to you, but it may be completely baffling to others. These were especially hard for me to know how difficult they were because they're open-ended, out-of-the-box puzzles. These are the types of puzzles that you either get or don't, there's no step-by-step process to get to them. It sounds like it was generally difficult, which was my main concern, but it looks like you still had fun with them, so I'm glad. Personally, I had a lot of fun designing these puzzles.

Oh, and thanks mit-mit for asking for hints! I didn't think of posting hints if no one had asked, and ultimately it helped people get through this game.

I will discuss individual puzzles in a comment for spoiler reasons.


Puzzle interface

The interface of the puzzle screen took me longer than I would have liked to implement, and it's still not great. I wanted the entire game to be keyboard based, but maybe that was not needed. I probably should have implemented moving pieces inside the "inventory" as well (currently moving a piece back just places it automatically), I think that's the most confusing aspect of the UI. It's also buggy sometimes: a piece sometimes hovers under a piece that is already placed. If you have any suggestions on how to improve it, or if you know any useful library I could have used to implement it more quickly, I would be interested in knowing.


Final notes

Sorry about any technical Python dependency/version issues: I just tend to focus on the game and I sometimes forget about these details with the time pressure. I should pay more attention to this.

Let me know if you have any other feedback or thoughts about this game. I enjoyed playing your games, though unfortunately I didn't have time to go through all of them this time, so apologies if you didn't get a rating from me. There were many great games, and I'm always impressed at what can be done in one week. Congratulations to the Obbo's Descent's team for first place in the team category! Thanks mauve for hosting this! See you all next time.

4 comments

Alone in the sea - Post Thoughts

Posted by chrisyan2000 on 2020/10/11 00:40

I would like to say thanks to the people who gave valuable suggestions and thoughtful comments.

First of all, about the missions being too straight forward and easy.... It's just like minecraft, if you just followed the minecraft missions then it's boring, the key of this game is to explore and build! (however I didn't have enough time to implement a lot of sandbox features so the building part is not that significant, I should try getting into a team for ideas like this). I've asked my friends, co-workers and family to try this game, and in order to let most people(non-technical) enjoy the game, this is the difficulty I've decided on. It turned out that I've mis-calculated the difficulty since pyweek entrants are technical.

When I was trying to play the game I realized that it could be tough for a new player to get used to the controls (;, given that I'm a veteran minecraft player I'm more comfortable with it, and still had a little trouble with opening the pack. So I simply made the initial letter of each word the control! "pack" -> [P], "build" -> [B], "craft" -> [C] ...  However it resulted in a rather uncomfortable gesture, but you don't need to check the help page as often. And another reason is that I didn't have enough time to make the changing the key configuration stuffs.


And among the ratings, there were a couple of rather uncomfortable ones... which stood out in either the score and wording, or both:

there were a couple of ratings in "Alone in the Sea" gave DQ or very low scores for the following reasons:

  • 1. music copyright
  • 2. image copyright
  • 3. stealing texture

so, to those people,

  • 1. I've INCLUDED a copyright.txt for the music in the final submissions, please read them, they are all license free music.
  • 2. The goat image from undertale is from undertale wiki, its textures are under creative commons and pyweek is no where close to a commercial use.
  • 3. I don't know where that comes from and I even have the editing history on paint.net. The textures are no where good enough for me to 'steal' it from anywhere, and I'm pretty sure that no one will even want to reuse those textures either.

2 comments

Cast Away! (MUFL) - A Walkthrough video

Posted by encukou on 2020/10/07 23:48

I finally managed to take some time to record a video. In case you're stuck, maybe you can use this to see how to get further. And in case something's wrong... here's how the game should look: https://www.youtube.com/watch?v=eK4k5XVLwBM


Add a comment

L0ST_!N_CYBER$PACE - Diary Entry so you can comment if you have problems with me or my game

Posted by OrionDark7 on 2020/10/06 23:38

forgot to do this.


I had someone so kindly point out that I didn't list my dependencies, so here they are:

  1. pygame
have fun

2 comments

Alone in the sea - Final - "thoughts before the end of pyweek 30"

Posted by chrisyan2000 on 2020/10/04 18:53

In the beginning of this contest I was going for a game which mainly focused on a storyline but... (Turns out I'm not good at writing stories)

Then when I was playing on a minecraft skyblock server, I decided to make a sandbox survival game, where the main goal of the protagonist is to get rescued. And of course, you can build your raft just like any sandbox games.

Because the controls are pretty complicated, I made the hunger and thirst bar go down reaaaaaally slowly.

For the main menu animation, I was going for the feeling of a musical stage show, that also explains the music choice for main menu. And the in game music is called "Tomorrow" from a loyalty free site "bensound", I was going for the loneliness in that piece of music.

This is the 6th pyweek I've participated in and it had been an awesome week.

Thank you very much for playing the game!

(The reason why the limbs are detached is that... it's easier to draw xD)


Some stuffs that I didn't manage to finish:

  • Decorations, like putting flower pots around the raft
  • Building on islands
  • Animals and pets, (there was going to be a little goat that follows you after you've discovered the goat island on the top right, but I didn't have time to finish that)
  • Daylight cycles, and weather
  • Islands with bosses on them(I have always wanted to make a game with bosses like "Just shapes and beats", maybe I will go for that in the next pyweek)
  • Picking and chopping animations
  • Multiplayer(I was think about multiplayer at first, but based on my previous multiplayer pygame project.... I won't finish on time)


You can technically building an infinitely large raft, since planks are renewable.

And here is a pic of my raft!

Add a comment

Obbo's Descent - "Invert Y" option makes game unplayable on Windows

Posted by rdb on 2020/10/03 09:38

I've just come to learn thanks to a tester that the game becomes unplayable on Windows when clicking the "Invert Y" options for the mouse in the options screen.  This is because it makes it impossible to look upwards with the mouse.  If you are on Windows, I recommend either:

  • Grabbing the fix from GitHub
  • Playing with the "Invert Y" option disabled.

Sorry for any inconvenience this has caused.  If you encounter any other playability issues with the game, please let us know.

Add a comment

Space Savior - Best score I don't know how.

Posted by Xyolidge on 2020/10/03 04:55


Add a comment

Space Savior - Best score so far.

Posted by Xyolidge on 2020/10/01 20:30





Add a comment