The Puppet Master

“I see the Puppet Master high above on the walkway
He pulls one string and up goes a leg… Down goes a head
He pulls one more and he lets them all go!” - The Puppet Master, King Diamond

Webstart

Mimic the movements of the puppet by pressing the corresponding keys.

2 Difficulty levels:

  • 1: 4 movements, max 3 repetitions of a move
  • 2: 5 movements, max 2 repetitions of a move, nr. of moves increase faster

Controls:
Left arm implies arm on the left side of the screen, right arm on right side, the same for legs.
Default controls: (Keys can be changed by pressing [c] at the title screen)
Numpad 7 - left arm
Numpad 9 - right arm
Numpad 1 - left leg
Numpad 3 - right leg
Numpad 8 - head

[p] to pause whenever the game says you are allowed to pause.
[esc] to exit.
Choose difficulty level at title screen by pressing numpad 1 or numpad 2.

One extra attempt at every 10 acts completed.
Highscores and last scores are kept for both difficulty levels.

The Puppet Master generates a sequence of moves, the screen displays which keys you must press, and then you have to repeat the moves. You must enter each move in less than 2 seconds or you lose that act.

How do you play? I don’t understand what to do :expressionless:

I can’t get it to start. I can set keys and all that, but it won’t run. Which key?

Press 1 or 2 on the numpad to select the difficulty level.

I still have that FTP account open? o_O

Anyway, interesting game.

For those who don’t get it, it’s a version of the game “Simon”

Yeah it’s still open. Hope you don’t mind. It’s only temporary though.

nah I have plenty of space, feel free to use it

I tried 1 and 2, it didn’t work. I will try it again when I get home.

You can now use the normal row of numbers for picking the difficulty as well as the numpad.

The animation seems to “snap” a bit at the end of the movement, which makes it a bit “uncomfortable”. It would also be nice to be able to be allowed to press the keys a bit quicker (not have to wait until the animation is over). Might just be me being a bit impatient.

If you have some bytes over, you might want to try something like:


	g2d.setFont(...);

		g2d.setPaint(new GradientPaint(...));
		g2d.drawString(...);

I think that can do a lot for the presentation of a game.

and maybe even:


	g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
	g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

Should improve the look as well and I think there is no worry about the framerate anyway. JavaDoc or google should have more info on this if needed.

I initially had the anti-aliasing in my code but it made the text look smudged, I didn’t know about the text anti-aliasing so I’ll turn the graphics’s anti-aliasing back on and the text off. GradientPaint on text? If there’s a way to outline the text then I might try that but I’m not too sure if that will look good. The presentation of the game isn’t too pretty, I know. I’ll see what I can change here. I’ll probably make the graphics scalable as well.

The time before pressing the keys is the biggest issue I have here. I haven’t played the original Simon so I’m not too sure about the timings but the problem is that if I decrease the time before pressing the keys too much, then the animations go by too fast and it looks bad. Then I might as well remove the animations and have the same look as the original Simon 4 colors, which isn’t really worth 4k. I suppose I could change it to buffer the input and then play out the animation according to what was pressed.

About the snap, this main purpose of this game was to test out timeline based movement instead of incremented movement. I used graphs to derive equations for the movements, but those graphs are based on “perfect” timings. pi is used in there and that might be rounded badly or the milliSecond timer goes too slow, I’ll check out the nanoTimer. The second half of the animation starts when half the animation time has run out and it could be that the timing jumps right before the second half. I’ll have a look, thanks.