I had no idea what was going on.
That's forgivable, I think.
-The first thing I walked up to asked for a 128-digit code, which I naturally didn't have, so I walked over to what I thought was a door and "injected" it. This brought up a Python console that said I could type "help", "copyright", etc. for info but everything I typed gave me an error (ex. "NameError: name 'help' is not defined"). I wasn't sure if that was part of the game or a real error.
I swear help() worked before. It just gives you the standard Python REPL help (which would be significantly better than nothing, actually, since it prints docstrings) anyway.
What's most worrying about this is that you thought the injection console was proximity-dependent. You must have figured it out by level... uhh, two (I suddenly regret being cute and zero-indexing my level names), though, so that's probably okay.
-If I press Up to go through all my previous commands, characters from longer lines are left visible, but non-interactive.
Yeah, that's an unfortunate side-effect of the hacks I had to put in place to even get command history working in the first place. The character graphics library I'm using completely takes over when you try to take in a string with it, and it doesn't expect to have its character buffer magically be overwritten out of nowhere, so bad things happen. I'm still trying to get in contact with the guy who wrote it.
-After reading up on Python stuff and trying a few things, I returned to the game from my browser and nothing was working. It didn't respond at all, even though the text-input cursor still flashed. I couldn't even Alt-F4, but closing the other window closed the game just fine.
Ah, that would explain all the spam in my update server log. Good thing I implemented autosaves!
This is another problem with the graphics library. It only pulls keyboard-related events out of the event buffer, so whenever you move the window, focus on something else, etc... the event buffer fills up and the program just stops responding. For now, just make sure you close the injection console before you tab away. Should be an easy fix now that I've made my blood pact with
inspect, though - I'll work on it after dinner.
I did have issues in level 1 where I thought I was interacting with the keycode thing, but nothing I did to it had any effect. I ended up just bypassing it altogether, but it bugs me that I don't know why changing the code or entering it didn't do anything.
Yeah, I semi-purposely allowed for a variety of solutions to level 1. And by semi-purposely I mean I designed it before I realized some objects shouldn't be accessible from the console. Completely accidentally, in other words.
For future reference,
the object expects its code parameter to be a string; you probably set it to an int. I thought I'd fixed it so either one would work, but apparently not.It's nice that, even though I'd never used Python before, I could learn enough in a short time that I was able to enjoy the game.
Oh wow, I didn't think someone who didn't know Python would be able to play at all.
Can you tell me more about the process by which you figured it out? Did you get the hint in the level name? This is important stuff to know - it's clear that I'm going to have to implement a proper tutorial.
It would be nice to be able to disable music. It doesn't play 90% of the time anyway, so I'd rather just listen to my own music.
That shouldn't be hard (err, you realize Windows has program-by-program volume control built-in, right? Right click the volume control icon and click "Open Volume Mixer") but it sounds to me like the
real issue is that you're running out the clock on the music. I'd assumed people would take two or three minutes per level, and set the music up accordingly; how long did it take you, just about?
Edit: In level 4, trying to tightly surround the boulder caused a crash. It was a stupid solution to try, but it was the first thing I did.
Wait, what exactly did you do? When did it crash? That's very strange - any exception that gets raised in the level logic gets caught and printed out the next time you bring up the injection console.
Later, I found that the way the gravpads worked was a bit unintuitive.
I take it you never figured out how to get the objects' docstrings. For future reference, if you ever pick the game up again, "print(whatever.__doc__)" where "whatever" is the name of a game object will print out a complete description of how the given game element works.
Can you think of any more visual way to convey the idea that the gravpad doesn't rotate? What made you think you had to rotate it in the first place?
Edit: Level 6 is too easy. I just had to move one object and completely ignored anything else.
Wait how - wait -
oh god why didn't I think of thatYou're saying you moved the pressure plate in front of the door, right? Yeah, you're not supposed to be able to do that.Edit: Level 7 is tricky. I feel like I'm missing some important info because of my lack of Python experience, and the game freezes up within a minute or two every time the window loses focus while I'm reading things online.
No, you were missing important info because you accidentally cheated through level 6 (5)...
Edit: I won.
I did it in a way that probably wasn't intended, though.
After I couldn't figure out what "func" to put as an argument for the upload function (Really curious about that), I decided to try something simpler. I just walked out of the room diagonally, and entered the exit diagonally. Done.... Unless you're talking about the last level (it sounds like this paragraph is about it, since that's the only one with an "upload function"), which if you start counting from one instead of zero would be level 8. In which case, yeah, the level is literally unsolvable if you haven't figured out docstrings... or even if you have, actually, since functions normally don't have them.
In my defense, the readme tells you all this stuff (that was sarcasm, I realize no-one reads readmes)...
except of course you probably didn't even know the readme was there, since it's mixed in with all the crap cx_freeze generates when it makes a standalone executable. See, all the problems are in someone else's code!
My code is flawless!
... also what the hell? You can't move diagonally. There's an entire joke in the readme based around that fact.
Anyway, thanks for the feedback. Now if only someone would tell me whether or not I've fixed non-QWERTY support...