Log In  

Cart #rijenipeko1-10 | 2019-09-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
10

ONLINE MULTIPLAYER VERSION IS HERE!

https://gamejolt.com/games/infinitegolf/441497

Please let me know what you think :D

Updates

  • Avatars! :D
  • Music and sfx
  • Particle fx
  • Leaderboard for online play (coming very soon...)
  • Scorecard every 18 holes
  • Tweaks and bug fixes
  • Intro screen
  • Full GPIO support for multiplayer (but that needs a website to host, so watch this space...)
  • Thanks @remcode @dw817 @josh999 for the awesome feedback ;)

Previous

  • Autotiling
  • Tweaked power meter - more power close to the max
  • Randomise the golfer avatar per cart reset
  • Increase par for holes with lots of water
  • Wind same for all users now

  • Much improved PAN (up arrow)
  • Fixing some crazy bugs (like hole 71 causing an infinite loop <facepalm>)

  • Stepping stones in lakes - hopefully this should sort the unplayable holes issue
  • Menu options to reset hole and delete save game

  • Tutorial level!
  • The holes start easy and get harder - after 50 or so holes anything goes
  • Procedural generation basic version is ready!
  • Up/Down to pan a bit
  • Lots of UI tweaks

TODO

  • Online replays via GPIO and a BAAS (e.g., FatFractal)
  • Stats screen (every 18 holes?)
P#67117 2019-09-02 09:21 ( Edited 2019-09-28 06:55)

1

Golf has always been one of my favorite sports (no tackling or contact - yet) :)

And it's always difficult to translate this to the computer as a game. One of the best I've seen on portable systems so far is for the Gameboy Advance called, "ESPN Final Round Golf 2002."

https://youtu.be/lECQdXDBFfk?t=35

I especially like this version as you can line up your shot using the LEFT and RIGHT arrow keys to see WHERE your ball will land BEFORE you swing (provided you give a good swing).

Without this "preview" it has always been difficult to determine just where the ball will land based on how much power and accuracy you give behind your swing.

Look at the classic and original Mario Golf for the NES.

https://youtu.be/BmWjZbHjUgg

While you can't determine where it will land before you swing, the entire field is kept on one display making it easier for the player to become familiar with distances, accuracy, and swings.

Usually hitting a tree is also out of bounds. In your game in some cases you have to hit the ball AWAY from the hole just to get out of the woods. Few games do this.

Usually if you are out of bounds, the ball is reset on to the green with a penalty to the score.

P#67133 2019-09-02 16:26 ( Edited 2019-09-02 16:41)

Thanks for the super resources and comments @dw817! Indeed NES golf is a big influence. I’m combining it with a kind of mini golf feel (like in mini golf where bouncing around off edges is the norm). I agree it’s annoying to have to reverse up the fairway sometimes though. I’ve found myself in similar positions on the course IRL though so the annoyance is accurate haha ;)

P#67138 2019-09-02 17:16
1

Well then maybe have an option for a MULLIGAN, that is, to be able to redo the shot without it counting on your score.

Because once you hit a tree in this game, chances are high with your backswing - you're going to wind up with a BOGEY or double BOGEY if even that.

P#67148 2019-09-02 19:17
1

This is really fun. I like the simplicity of the UI and the depth of getting used to the terrain, weather, etc. Nicely done.

P#67178 2019-09-03 06:44

Thanks @dw817 and @josh9999 ! I really appreciate he comments and feedback, thanks for playing it :D

This is my first pico 8 game so I’m learning as I go, so to make life a bit easier I’m “remaking” a Ludum Dare iOS game I made before https://toucharcade.com/2015/09/11/minigolf-endless-mmo-review/

I plan to spend much more time tuning the game feel and procedural generation. Any suggestions very welcome! Couple of key things I need are an intro map to teach controls, ball spin etc, and to sort out the “stuck behind a tree” issue

P#67179 2019-09-03 08:11

Hi @dw817 I hope you like my solution to 'stuck behind a tree' now? all the best

P#67220 2019-09-04 08:03
1

I like this.

The sprites are suitable. The terrain generation looks really good (though see below). It plays well.

There are a couple of things I noted, which I have typed about at too much length below.

Large areas of water and headwinds

Random terrain generation can lead to large areas of water between the golfer and the hole; that in itself is fine, however when this is coupled with a strong wind against the golfer this can lead to a string of water shots followed by an out of time message. An option in the pause menu to "Wait for wind change" or "Abandon hole" would save time for the user.

If you take up that suggestion, the command to add a menu item is menuitem, and as with most other commands it is documented in the pico8.txt file.

(Or am I overlooking dynamic wind changes anyway?)

Regarding this, I know that water is a hazard, and I should do my best to find an in-game way to get past the hazard (rather than ask for a skip option), but at the moment I'm not sure that there is always an in-game way past the hazard. And when there's not, for me the pleasure drops dramatically as ball after ball lands in the water.

This isn't to say this is an all-the-time thing. I'd go so far as to say it's very rare that it isn't possible to hit the ball over the water at the moment. Just that there have been a couple of times when no matter where I try to take the shot from, the wind has been too strong for me to overcome. (And trying to hit the ball to somewhere where a difficult shot over water into a headwind is hopefully more playable is also a good way to land the ball in the water hazard.)

Hole generates at edge of green adjacent to water

I noticed today (but not a couple of days ago) that the hole can generate at the edge of the green. And water can generate right next to the edge of the green. This too can easily lead to putting the ball in the water (not quite as often as with the above - this one is far less of a frustration for me and perhaps if I was programming it I would leave it as it is). I think that giving the hole a protective zone of one square all the way around it where water can't generate would help there, even if this feature was only in an "easy" mode. Or as a final step in generation, adding in a border of green around the hole would provide the same protective zone without needing any checking.

With an "easy" mode, the generation of water could also try to ensure that there is a gap of fairway or rough between it and the forest (at least on the course, but not when the river is just cutting through the forest, which is a really nice background detail by the way). :)

A note on the above

Those two are balance issues, between gameplay and terrain generation, and as the developer, where you decide the balance should lie (for example, between lots of water and protective zones) is up to you, irrelevant of my preferences for a slightly safer way up the course (not completely safe, just when the options are between hit the ball into the water or waste time, I would rather see a narrow twisty strip of land to one side as an option, so I get the choice of which approach to the hazard I want to take).

Deliberate hook or slice shot

I have played a golf game where you could deliberately hook or slice the shot. I believe the mechanism was something like pressing a left or right key to stop the power meter, instead of the normal shot key. I suspect such a feature is easy to add; it might be able to borrow some code from how the wind affects the ball (though I haven't looked at your code to determine that, or thought much about the physics, instead I'm just writing what I would explore).

Thank you for posting this; it's good fun.

P#67230 2019-09-04 14:40

Hi @remcode! Oh wow thank you so much for taking time out to give that excellent feedback! I really appreciate it, and I fully agree with all your points.

1) I agree re the need to make all holes completable - this is quite a challenging problem as it involves some kind of parsing and comprehension of the completed hole, then a systematic way to modify unsolvable holes to solvable ones. <scratches chin>. Yep, wind changes dynamically. For reasons that will become apparent the wind needs to be the same for all players so I need to pre-cache that

2) Yes I agree, I changed it to randomly place the flag on any green tile. I've reverted it while I think of a better way (perhaps once the auto tiling is ready I can do something)

3) Hook and slice shots - yes these are already in there! To make this clear I have added a long-overdue tutorial hole explaining the controls. I'd love to hear any thoughts you might have for how it could be improved?

Thanks again, what an awesome community!

P#67249 2019-09-04 19:16

Ha, got it in two shots for the opening demo hole !

The graphics are still a little tricky to figure out. Note in the NES version you have true solid GREEN to show you are on the field where its smooth ground and outside of that hitting a tree of what have you is out of bounds.

They use LIGHT GREEN to show you are on the field and DARK GREEN to show you are on the green, the area where you putt the ball in the hole. Also once you touch the green you usually shift screens and show only the green enlarged and lets the player have greater freedom of direction by having a larger area to choose from.

I'm just going to modify your tiles for a sec. This is by no means great but it makes it easier at least for me to see where the ball is and can be putted to. You might add some more "rounder" tiles to give depth to the beginning of trees and the "Green."

Cart #gigadidida-0 | 2019-09-05 | Code ▽ | Embed ▽ | No License

Noticed also the game does not reset to the first hole when you replay. Any option to do this ?

P#67260 2019-09-05 01:36 ( Edited 2019-09-05 03:16)

Hi @dw817 thank you for that cool experiment! I like the combination of light green fairway and dark green putting surface. I started off with that but found that I couldn’t make it look good against green trees, but that was before I changed the tiles (the rounder versions you mention are lurking on my spritesheet ready to go once I code them in). I’ll have another go.

The “no reset” is an homage to “desert golfing” - where your score just keeps growing forever and there is no turning back on the infinite golf course (well, practically infinite). I’d happily add a menu item to force a full restart if you think that would be cool (but I want to get the multiplayer feature up and running first)

Nice work for the par on hole 0! Thought I’d leave that message as a little Easter egg ;)

Thank you so much for taking the time for that remix and post (:

P#67269 2019-09-05 06:50 ( Edited 2019-09-05 06:52)

Glad you like the temporary tiles. It's just now sinking in me that this game runs forever, it designs its own courses, and there is no score or anything you need to beat. True ZEN.

Looking at Desert Golfing.

https://www.youtube.com/watch?v=v7M4uAHpc-8

Kind of like a 1-player Bananas.

https://youtu.be/UDc3ZEKl-Wc?t=16

Okay, I can't think of anyone at all who has made a top-view golf game where the course is created randomly by the computer and retains that same course even through multiple runs until you complete it.

Very much you've earned a STAR on this, superfluid !

I have to ask because I don't know, does the course get harder with each hole ?

P#67281 2019-09-05 15:43

Haha you are too kind, thanks for the star @dw817

QBASIC gorillas - what an old gem!

Yes I made it so the ranges on the random number generators gradually increase over 50 holes. So it’s still possible to have easy holes after 50, but it’s not likely to have really hard holes before say 30. I plan to introduce some longer timescale dynamic changes as well (another influence from desert golfing where colours gradually fade over hundreds of holes)

Next task is to fix the “unplayable holes” problem

P#67286 2019-09-05 16:04

Could you please add (X) or menu option to reset hole with two types ? Reset GAME (start back at hole one), or reset this course only.

If that's too much work maybe just have (X) option to reset current hole. I'm enjoying your game more knowing that the holes are generated from Random Seeds.

This is something I've always believed in, a great way to build maps of any kind for any puzzle or arcade game. I originally found out about randomly seeded number from Akalebeth years ago.

https://www.youtube.com/watch?v=hTG3KRGJAjk

When it said, "TYPE THY LUCKY NUMBER....." I had no idea what it meant, until I examined the code many years later and found they were creating the entire world, dungeons and all, from that single seeded number.

P#67291 2019-09-05 18:22 ( Edited 2019-09-05 18:32)

OK some changes have gone in - let me know what you think

1) menu options to restart the current hole and to reset the entire game ( @dw817) - I reserve the right to remove these later if necessary!

2) test solution to unplayable holes by putting stepping stone tiles in the middle of large bodies of water

Thanks again for all the feedback :D

P#67298 2019-09-05 19:46

Stepping stones ? Hmm ... that does sound like an interesting change. And yes, I can see the reset option, you can also just reset the cart to reset the single hole.

Nice !

P#67301 2019-09-05 20:47
1

Thank you for the changes @superfluid

I played on this again a couple of days ago; I'm not sure I've played the latest version yet but no doubt will at some point. The stepping stone islands certainly helped to get me to the green on a couple of holes. I took screenshots of a particularly large body of water somewhere near hole 46. This one I ran out of time, and would have been a little over par anyway after a few shots to the islands landed in the water - perhaps increase the par a little if there is an island? or is it just that I have bad aim? probably the latter ;-) - no matter - without the islands I wouldn't have even made it to the green, so they are serving their purpose.

Here's a composite image:

P#67425 2019-09-09 08:22

Hi @remcode that is awesome thanks for the excellent feedback and screenshot composite! I really like your idea of adding to the par if islands were created - this will be in the next version ;)

P#67439 2019-09-09 18:04

Getting ready for a big update to this- ONLINE MULTIPLAYER!

This uses the GPIO pins - does anyone know if it is possible to embed js/html in the bbs or must I just provide a link to the hosting service ? (Probably gamejolt) Thanks!

P#68090 2019-09-24 05:51
1

Hi @superfluid.

I wondered if you would code something like this (GPIO online multiplayer) when you mentioned "For reasons that will become apparent the wind needs to be the same for all players so I need to pre-cache that". That's very cool.

The site I see mentioned a lot on the bulletin board is itch.io but I haven't tried it out so can't answer how well it would work with what you intend. Wildfire, a game by dollarone uses the cloud to store level data, and tobiasvl - who is very knowledgeable - has written to dollarone "You could put it on a site like itch.io, where you can have your own HTML5 wrapper."

When I browsed the bulletin boards a couple of weeks back for GPIO projects, the only other online multiplayer game I found was Picar.io, The Massive Online PICO-8 Multiplayer Game and they wrote their own server in python. The bulletin board post is by Vertex, but other people were involved.

Today I also found One Button Duel by seleb which is hosted on itch.io. Seleb has written: "One of the main things I wanted to try out with this game is an online multiplayer mode using the webplayer + GPIO stuff I experimented with in my PICO-8 twitter feed. You can try that out on the itch.io version of the game, which lets you connect to another player for peer-to-peer matches (using the Peerjs library and a heroku server to broker connections)."

So for online multiplayer pico-8 games, your game might be in a group of just three games (although there might be other such projects that haven't been mentioned on the bulletin board).


For general perusal by anyone, as I have them open after tracking down the above link again, in chronological order here are links to other GPIO JavaScript projects:

Posting game stats/high scores via GPIO ports by kometbomb (2016)

P8T: A PICO-8 Twitter Client by seleb (2016)

One Button Duel by seleb (2016)

Streaming webcam to PICO-8 by juju (2017)

Picar.io, The Massive Online PICO-8 Multiplayer Game posted by Vertex (2017)

GPIO Listener JavaScript Library by BenWiley4000 (2018)

P8 Messenger - Small GPIO library by BenWiley4000 (2018)

Wildfire by dollarone (cloud stored levels, 2018)

World of Pico: a GPIO experiment by hypothete (2019) which transfers "map data from a JavaScript context to the cart, allowing for essentially unlimited maps for exploration when the cart is hosted on a webpage"

P#68127 2019-09-25 12:33 ( Edited 2019-09-25 12:52)

Hi @remcode!

Once again an insightful and extremely helpful post, thank you!

Those are some really useful resources. I’ve reviewed them all and it has been very interesting to see how people approach GPIO data transfer. I’m using BenWiley listener on the JS side, and linking this with a “comms bit” to synchronise turn taking (similar to an approach I read about in the BBS somewhere).

My game is a little different in that the multiplayer is asynchronous, so I need to send a full replay and game state for each hole the player completes - I made this fit in 128 bytes so I don’t need to worry about splitting data over multiple packets, though on the download side I need a countdown so the game knows when it has all the replays.

I will check out itch.io hosting, thanks! I have an old gamejolt account already so I’ll also see if that service supports pico8 js, and report back.

Thanks again!

SF

P#68153 2019-09-26 06:00

Looking like a champ now ! Could you please not randomize the golfer-choices in the beginning ? There's a favorite I like and want him to be found in the same place the next time I play. You can lock it down like this:

ran=rnd(-1)
srand(1234)
... display your golfers with random colors
srand(ran)
P#68197 2019-09-27 19:29 ( Edited 2019-09-27 22:14)

Online multiplayer is now here!! Please let me know your thoughts!

https://gamejolt.com/games/infinitegolf/441497

@dw817 don't worry, it saves your avatar in cart data so it is persistent across plays ;)

P#68215 2019-09-28 06:57

Excellent!

Minor bug: dirt dots are moving for every hit on the ball!

P#68218 2019-09-28 12:07

Thanks @freds72! If you are playing on gamejolt those may be the other players you are seeing ;)

Bigger problems though...

BBS: can’t access server for online mode
WEBPLAYER: cartdata is not saved so people can’t progress in the game 🧐

Solution? I could try using javascript persistent storage on web
player to restore the game state in case there is no cartdata
present?

EDIT: That proposed solution works - it turns out that the Javascript side can set GPIO pins before the pico8 instance launches, and so GPIO can be used to pass initialisation data into the cart! This suggests a general method for persisting cartdata in html exports. If I get time I’ll post the code snippet here.

P#68220 2019-09-28 12:56 ( Edited 2019-09-30 12:57)
1

This really is fantastic. Everything is done to a high quality, and all the little extra details you've put in - from avatar, to level construction message, to multiplayer! - round it out nicely. Great stuff.

P#68565 2019-10-06 09:26

@remcode that is awesome thank you very much indeed! 🤗

P#68576 2019-10-06 15:59

Nice but when I hit a bunch of brown dots fly out from the ball. Then they are still there and frozen when I line up my next shot.

Once the ball is hit a 2nd time though suddenly all those brown pixels start moving again. I can post a video if you like.

P#68577 2019-10-06 16:31

@dw817 those are the other players ;)

P#68580 2019-10-06 16:53

Others players ? That's astounding !

But ... is there a way to have them not appear ?

Also if you've cracked the multiplayer element, two questions.

[1] Can you do it in current Pico-8 in Lexaloffle.

[2] Can you add a CHAT ability between players ?

P#68581 2019-10-06 17:11
1

Haha thank you!

To be precise, they are the ghosts of the past 50 players to complete the hole, so it’s asynchronous - could call it “mingleplayer” ;)

Optionally switching them off is a great suggestion- I’ll add a menu item, thanks

As for your questions

1) sadly it only works within the html export because its not possible (afaik) to speak direct to a server from inside pico8. I have to use GPIO to send replays to JavaScript, then talk to the backend server (FatFractal) from JS. If you inspect index.html in your browser’s JavaScript console you’ll see how it’s done

2) because it’s asynchronous that’s not really doable ;)

P#68583 2019-10-06 17:21

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 14:03:54 | 0.106s | Q:55