Log In  

Here's DIAMOND GHOST!

A 64x64-game, quickly made to learn how to do smtng in lores.

Controls:
Arrow keys to control the ghost.
X to start game.

You only have three moves. Use them wisely!
You will gain a new life if you catch a diamond and have less than 3 lives...

Have fun! :)

/ Pingo

Cart #50206 | 2018-03-10 | Code ▽ | Embed ▽ | No License
2

P#50207 2018-03-10 18:25 ( Edited 2018-03-20 21:24)

It's actually pretty fun for such a simple concept. Feels a little too RNG though. Way too easy to get boned by the randomizer three times in a row. Four or five hearts would allow much longer plays.

Best I did was 16.

P#50212 2018-03-10 19:55 ( Edited 2018-03-11 00:55)

Pretty addicting, but yeah, you can get royally screwed. Maybe an extra move can be added if you reach 15 or 20 diamonds.

Also, it'd be good if we knew what our final score was; once the game ends there's no trace of it.

P#50220 2018-03-11 00:43 ( Edited 2018-03-11 05:43)

Thank you so much Felice and Vectorguy for the input!
I totally agree with both of you.

So... to fix the randomness, I added some MORE randomness! :)

So, NEW version below. Game now works like this:

  • X to start at the title screen.
  • Added last score at the title.
  • Control the ghost with arrow keys.
  • Catch diamonds before the disappear. Takes 2 sec.
  • If you have less than 3 lives, you will gain one more when you get a diamond.
  • Every 2 sec a GREEN HEART shows up. If you catch it, it resets ALL your life + energy.

Still - my highscore is 29! It's not easy... :)

/ Pingo

Cart #50236 | 2018-03-11 | Code ▽ | Embed ▽ | No License

P#50237 2018-03-11 08:29 ( Edited 2018-03-11 12:35)

32 is my record on 1.1.

My son found out that you can press up/down together with right/left and gain steps that way... And he ended up with 68 points... Is that a "bug" or a "feature"? :)

/ Pingo

P#50245 2018-03-11 11:00 ( Edited 2018-03-11 15:00)

Hm, not sure the green heart is adding much. I can still get boned by three bad RNGs in a row.

Like, say I'm at the tile left or right of center. If the diamonds and hearts show up out of reach in one of the corners three times in a row, there's absolutely nothing I could have done to win. That's discouraging. There's no way to plan for it, guard against it, conserve moves, nothing.

P#50247 2018-03-11 12:03 ( Edited 2018-03-11 16:06)

@Felice

I agree. Some rounds I end up with 3 points. Some rounds I go well over 20-30 points with not much effort at all.

Walking diagonally helps a lot, and aiming for the middle ground almost constantly when you have moves lefts, does too...

But I was thinking of adding moves-not-used to next round instead. Maybe that's a better idea.

Not sure on how to communicate the saved moves though and keep the design... :)

EDIT: Tried it again now and moved almost only diagonally. Then it becomes truly playable. 63 points. Still hard, but not impossible...

/ Pingo

P#50249 2018-03-11 12:27 ( Edited 2018-03-11 16:31)

Thank you so much Felice and Vectorguy for the input!

You're welcome!

Every 2 sec a GREEN HEART shows up. If you catch it, it resets ALL your life + energy.

That's a good idea; I like it.

I think the game is fine as it is now.

P#50251 2018-03-11 12:58 ( Edited 2018-03-11 16:58)

Oh! Silly me, I didn't realize diagonal was a single-move option. One of the downsides of playing on keyboard. Lemme give it another go with that in mind.

P#50257 2018-03-11 14:56 ( Edited 2018-03-11 19:03)

@Felice
I've been thinking about a lot of different ways to improve this (like adding the Green Heart only to the close tiles etc), but not found any sollution that is really great.

Any ideas are welcome though! Especially code stuff to improve it... feels like there's some glitches left btw, but nothing I seem to be able to improve... :-/

/ Pingo

P#50258 2018-03-11 15:01 ( Edited 2018-03-11 19:01)

Oh, I was editing an idea into my comment while you responded. I'll just move it here:


Okay, yeah, that's much better, but it IS very hard to do. I have to be very precise pressing two keys at once. Can you think of any way to allow maybe a 1-frame slop on it? Like, remember the move made last frame, and if this frame there's a move on the adjacent direction (e.g. last frame west, this frame north), make that move free.

P#50259 2018-03-11 15:02 ( Edited 2018-03-11 19:03)

@Felice
Hmmm... that's an interesting idea.

I did think about "free" moves - but in other ways - like if you picked up an item your moves "froze" for X turns; every 10 points means a move-free-turn and so on...

How would you suggest the code would look like to implement your idea? Not sure if I understand exactly what you're getting at here... :)

/ Pingo

P#50263 2018-03-11 17:32 ( Edited 2018-03-11 21:32)

Okay, I came up with a semi-klunky timer method that seems to work really well in spite of being a (small) forkful of spaghetti. This'll give you four frames of slop between buttons for diagonals:


The logic you care about is in the block with the comment -- count the move, or combine?.

P#50275 2018-03-11 18:56 ( Edited 2018-03-12 20:14)

Also, you could disable the timer countdown and just always allow combining with the last axis move:


P#50276 2018-03-11 19:00 ( Edited 2018-03-11 23:02)

@Felice
Ah, thanks for that!

Now I just have to implement that in the game... :)

/ Pingo

P#50327 2018-03-12 15:27 ( Edited 2018-03-12 19:27)

Still bothers me that it's a bit spaghetti. I whittled it down a little, but meh. Anyway, assuming you've already calculated this frame's dx,dy for the player, and that you don't need the timer (which I think you don't) this is all you really need, self-contained:

    -- count the move, or combine?
    if dx!=0 then
        if dy!=0 then
            -- true diagonal move
            _move_count-=1
            _moved_x=false
        elseif not _moved_y then
            -- new x-only move
            _move_count-=1
            _moved_x=true
        end
        _moved_y=false
    elseif dy!=0 then
        if not _moved_x then
            -- new y-only move
            _move_count-=1
            _moved_y=true
        end
        _moved_x=false
    end
P#50338 2018-03-12 16:58 ( Edited 2018-03-12 20:59)

@Felice

Thanks so much for that piece of code!
Sorry for late reply - been super busy with non-PICO stuff. :(

I'll try to implement this in the code...

/ Pingo

P#50513 2018-03-17 09:02 ( Edited 2018-03-17 13:02)

21 on first version
20 on 1.1

Lol i just realized I did all my games (like 10-15), WITHOUT using diagonals, so it means i'm a pro

P#50635 2018-03-20 17:24 ( Edited 2018-03-20 21:31)

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 09:01:59 | 0.018s | Q:43