D: Legends of the Swell
Hi all, I know I'm a little late to the party, but I wanted to try something new and the 2-button-only constraint is very interesting.
My entry is a surfing game called "Legends of the Swell".
The latest (non-compo) build:
Webplayer
Windows
OS X
The build submitted for the competition:
Windows
OS X
readme.txt
Instructions:
You control a surfer who needs to rack up as many points as possible within a time limit.
Use the left and right arrow keys only. Left turns you left, right turns you right.
When not riding a wave, zig-zag left and right quickly to move forward.
When riding a wave, hold or tap left or right to carve.
When riding a wave, hold down both keys to build up a jump, and release to perform the jump.
While airborne, you can spin, and perform tricks by hammering out combos of lefts and rights (5 to discover so far!)
You can collect score pickups if you ride a wave like a badass.
Give it a play and post your feedback.
Thanks!
Older version media:
My entry is a surfing game called "Legends of the Swell".
The latest (non-compo) build:
Webplayer
Windows
OS X
The build submitted for the competition:
Windows
OS X
readme.txt
Instructions:
You control a surfer who needs to rack up as many points as possible within a time limit.
Use the left and right arrow keys only. Left turns you left, right turns you right.
When not riding a wave, zig-zag left and right quickly to move forward.
When riding a wave, hold or tap left or right to carve.
When riding a wave, hold down both keys to build up a jump, and release to perform the jump.
While airborne, you can spin, and perform tricks by hammering out combos of lefts and rights (5 to discover so far!)
You can collect score pickups if you ride a wave like a badass.
Give it a play and post your feedback.
Thanks!
Older version media:
Thanked by 1raxter
Comments
I think you should cap the paddle speed because I can paddle faster than the wave, also maybe drop paddling once you on the wave, then let the players vector determine the speed while surfing, there could be the perfect angle that allows staying with the wave and then anything above or below slows you down.
after jumping it feels a bit light, so maybe look at increasing gravity and jump height.
1. It was running really fast on the default fastest settings, setting the quality in the beginning to good fixed this. I suspect it's probably a frame rate dependency thing like I encountered.
2. Controls felt awkward indeed, maybe changing the camera angel back to suit the keys? I'd suggest maybe looking more from the back or front with slight angles depended on your moving direction.
It's a neat idea, and I think there's something here that's fun if you can nail the controls a bit better, looking forward to seeing the moves!
I agree with @Pomb's points about the paddle speed. In addition, it ran fine on my Laptop on fast and I usually have framerate problems with lighting in Gamemaker, so I think the coding is effecient enough :P.
I'd also like a different camera angle - perhaps head on? So players have the wave coming towards them? Then the controls would make sense and you could anticipate waves earlier. I think the fun will really come in doing tricks in the air so I'm keen to see that implemented.
Also, what might be interesting is how the player stays on a wave once their there. Perhaps you need to keep your momentum up by diving down from the top of the wave and then moving back up just before you reach the bottom? Then it becomes a matter of how long you can keep the momentum going before a stray Yeti (I didn't see the Yeti, but I want too :() knocks you off the surfboard. This could also replace/assist the jump mechanic - so launching off the top of the wave is how you jump. :)
Keen to see more of this :)
I agree with limiting the paddle speed, it's too much right now, if it's less it'll be more rewarding when you actually get on the downward slope.
Also maybe lessen the turn amount to half of what it is and make a short hold do a vigorous turn, this might add a dimension of timing for doing the bottom turns? Otherwise you spam left or spam right to do sharp turns, maybe? Or have left right alternating to paddle and hold left and right do smooth turns and double tap to do a vigorous turn.
For the wave shape, it could help having a a bit of a smoother increase in slope instead of the sharp flat-to-steep snap. This might also give the catching a wave thing slightly more rewarding as you start to gain a little speed then more then more until you have enough speed to get down the slope.
Secondly, I thought this was quite fun! I like the camera where it is, although I agree that making the keys camera-relative would make it much more intuitive. Looking forward to seeing what neat stuff you add to mix things up a bit!
No performance problems on my side, but my desktop machine's pretty hefty, so not really indicative. A bit of clipping on the terrain, but that's to be expected. I also had the issue where coins would spawn at zero level and be swallowed by the wave, making it impossible to get them.
How are you pulling off the waves? Generating a terrain heightmap programatically in real-time? Is the surfer actually moving across the terrain, or are you just doing some UV-and-terrain-shifting magic to simulate movement? Just a bit of programmer curiosity. ;P
@Pomb
Glad you like the yeti, haha! He might stay. Anyway, I will play around with the paddling speed because as you said, it is possible to shoot off ahead of the wave, which isn't right. I wanted to padding to be used to get some momentum so that you'd stay with the best gradient of the wave when it picks you up. But I also like the idea that while moving around the wave, you have to wiggle around a bit to keep at the right point. However, I'll also try what you suggested about having the wave carry the surfer, and your angle governs how you move on it.
@Bensonance
Thanks for the feedback! You need to wait for the timer to run out to see the yeti, but if he didn't come, he was probably just shy and hiding between two lines of bad movement code :D
I like your suggestion about controlling your momentum by how you move up and down the wave. You reminded me of something I forgot to implement: momentum based on where you are on the wave. At the moment, it's just giving you a push if you are on the wave, so I'll change that. It should hopefully give the player a more real sense of movement/flow on the wave.
I like the idea of ramping off the top of the wave to jump. I originally left it out because the fairly crappy shape of the wave didn't really look like it could be ramped off, and also having a jump in adds an element of timing for getting the best air and doing tricks. If I manage to get a proper wave crest shape going, I'll probably add a small jump effect when you ramp off, and then a much bigger one if you perform a jump at the right time.
@raxter
Thanks so much man, if there's even a bit of that feeling of smooth surfing down a wave, then I'm very happy. I'll keep working on making it feel more like that. My number one thing is not to make it necessarily *look* like surfing, but feel like it. It helps getting some tips from an actual surfer, so any more thoughts about the movement are appreciated :)
I will tweak the turning speed, and probably implement the "spamming" method you mentioned, so tapping once gives you a little turn, and again (quickly) a bigger one, and so on, up to about 4 quick taps for a 90 degree turn.
The wave shape has been a total pain in the ass, but I'm still going to work on it a lot. I wanted to create the simplistic wave shape we see very often:
but then I tried to math and failed hard. Anyway, If I can pull off that shape, I'll work on the physics so that the movement is closer to how a surfer would move on that kind of wave.
@Gazza_N
Crusaders of the Swell it is! I actually had a few ideas like "X of the Y" (Masters of the Wave, etc). But I came up with Crusaders for the first post, and I knew it had to be so! :D
Your feedback about the controls is similar to what others have said, so it really helps to highlight where the common issues are. Thanks!
Haha, the wave code is probably completely impractical by standards, but it's evolved from quite a few different approaches, and I may have to radically change it again later. Anyway, it's just a plane (50 vertices on either axis) that is static, as is the surfer. The UV map on the plane does shift, table-cloth style, based on the surfer's _momentum and forward direction. The waves are actually done quite "mechanically". Each interval, a bunch of spheres are spawned with varying heights, positions and speeds. They move towards negative Z, but the surfer's direction and momentum will move them in an inverse direction. Then there are distance checks between each vertex and each "swell ball" (yup), and the vertex gets a certain amount of influence, and has its y pos set based on that.
I'll probably need to change it because:
1) I'll have to do a bunch of other stuff to get a more wavy wave shape, and a wall of spheres will be both pointless and impractical, where a single wave z position would suffice
2) When the surfer's not actually moving, it makes things like water trails and other physics-based fx quite tricky to implement
Other issues you guys pointed out:
- The camera. I'm still torn between keeping it side on, and front on. I had it looking at the wave at first but it was really difficult to get an idea of its shape. The side on camera was a solution, but I'll probably change the button arrangement as suggested. I also like that the side on cam gives this sense of riding on MOUNTAINS of water, which, given the ridiculous size of the waves, is quite accurate. However, the facing cam would be better for seeing tricks. Hence, torn between the two. I'll experiment with both angles some more later.
- Performance. Seems alright then, thanks. @Pomb, I wouldn't worry about the Fast/Fastest settings, I'll happily discriminate against anyone with that slow a pc :P (j/k, j/k!) But I'll also double check and make sure I don't have any bits of framerate-dependant code, because I thought I had covered them.
Thanks all for trying, hopefully I'll have a new build up in the next few days with some changes!
Hmm, on further thought even 1/d (inverse) or c^d (exponential) would work so long as d = 0 means that h = 0 and d = 1 means h = 1 you can scale that function to any height and width. Mathematically it's a function from F: [0,1] => [0,1] such that F(0) = 0 and F(1) = 1 that you then scale in the x direction for wave width and in the y direction for wave height, so height, h, at at distance, d, where D is your max wave length and H is your max wave height is described by h = H*F(d/D)
*blink*, soz I hope that is not too confusing... I'd need pictures but I don't have time to draw it right now... just saying to make your function normalised to 0-1 and then scale from there might be useful :p
also I vote side on camera with maybe a slight tilt towards the front perspective (like, 10 - 15 degees at most). The view of riding down a mountain of water is more epic from the side I'd think. *shrug*, maybe front on will also be just as epic though...
@raxter - dude that's some GOOD WILL HUNTING s*it right there. Do you walk around university campuses at night and complete unfinished equations left on black boards? Mind = blown :)
If I do have trouble with it, I may pick your brain (online or at the next meet), though this is a great starting point.
@FanieG - Thanks :D
Actually quite straightforward stuff, but I definitely need to work my maths muscles for stuff like this in the future. Thanks @raxter.
There's still a lot to do in terms of making the momentum and controls feel right, and if you happen to crash into the beach the whole game will break dramatically, so you may need to restart.
Let me know how the game feels.
Thanks!
She's playing well. The new waves look fantastic and feel a lot more natural, and you've nailed the collision, although movement does feel a little solid and slippery - like I'm riding on a wave-shaped iceberg rather than water. Perhaps having some sort of inertia or lag to the surfer's acceleration would fix that, if I'm making any sense. The tricks are rad though, and getting those powerups makes me feel badass. And dem particles... :O~~~
Speaking of the powerups, I have one little niggle - I'm actually having tremendous trouble judging their position. Because they're hovering in mid-air, and I'm not entirely sure of their scale, I keep misjudging my depth relative to them. Collecting them's been more a case of fire-and-forget jumping than deliberate course plotting and legendary feats of arrow key dexterity. I'm wondering whether having them cast a soft light onto the wave (or some other effect) to allow better indication of their depth wouldn't make that easier.
Keep at it! This is looking better with each release. :D
Thanks for the feedback!
I do like the wave code and structure. I guess having the waves collapse on the player is not an option?
I would love to have barrels and breaking waves and all that, but I highly doubt I'll be able to pull it off before the deadline. If I can work out how to get that breaking shape to look good and affect gameplay, I'll add it to a post compo version.
There was some cool feedback at the meet last night, but what @Pomb pointed out (and what I agree with), was that the first build I posted here, broken as it was, felt more fun when it came to riding the waves. I'm now in a weird position where I've been fixing the movement/physics code for long enough to have forgotten that the feeling of the earlier build was better! So, I'm going to do a bunch of tweaks, but the next (probably final) submission will hopefully play a bit better.
There are some broken bits, and some things I didn't manage to add, but ultimately I'm pretty happy!
Give it a go and let me know what you think. I'd love to carry on working on it for a while (after a mental detox), particularly to get the movement feeling 100 times better.
I'm sorry for not being more active on the forums during the development of the game! There was quite a lot more feedback and crit I could've done with, but my schedule has been very spotty lately. Actually screw that, laziness is my only excuse! :P
When you decided to add pedalboaters with magic anti-wave shields, you should have pulled the camera out a bit more or put some sort of warning prompt, I think. With any obstacle you need to give the player fair room to react, otherwise it's just frustrating. Perhaps pull the camera out in proportion to speed? That looks good, and ensures that the player always has enough info to react while only seeing what's relevant.
Also, the only tricks I managed to pull off were due to pure fluke. I still don't quite grok the trick system. :( Pulling off an accidental "impossible" flip was wicked cool though. :P
Nicely done! You've made huge progress from the initial build. :3
The only niggle I had (and I'm having to look for one here) is that sometimes my board got turned around to face the camera and I couldn't get it back round again. I'd also end up off screen when a wave came along and couldn't tell what was happening. I'd probably tweak the controls to be a little looser and easier on turns, kinda like in the skateboarding wii fit game if you've played that?
Awesome, awesome work. You should be so proud of yourself :)
@Kixie Thanks so much, that's really good to hear so thank you for the kind words!
I love your ideas about some of the sea life, especially surfing along with schools of dolphin. The seascape could be a lot more diverse and provide some interesting and funny obstacles. I'm still battling with the current trick system, and implementing a "traditional" trick system seems a bit boring right now, so I'd love to have a seascape full of things you can jump on and surf. Including sharks. Surfing on the back of a shark would be all kinds of cool.
I've never played with a wii balance board, but I'll look into it. Thanks!
I know what you mean about the surfer disappearing from view when coming towards the camera. It probably needs to lerp more quickly in that direction. In terms of the board getting turned around, was that because it would disappear under the water at times? If so, I can tweak that, but the surfer's direction will also be a bit more evident when I get a character model in there. But I'll work on that turning too. I haven't played that wii fit skateboarding game, but I'll try and find a video or someone with a wii.
@Gazza_N Glad you like it! But, who says smashing into a jet ski is a bad thing? One less of those in the sea to worry about :P
Seriously though, that's a really good point and I'll try get something good going there. However, blowing one of them up does sort of add to the gnarly factor, so I am still weighing up whether smashing into them should in fact be a good thing. I've tried to stay away from penalties that stop the surfer moving (ie. no bailing/stun on wipeout), so I might make it that smashing into a jetski causes the surfer to vault upwards. In this way, the penalty to hitting one is that you might lose the wave you're on (and therefore the trick chain), but in doing so, you get the opportunity to do some radical tricks from the jetski-explosion jump.
The tricks are a tricky (aha!) thing to get right. I never properly built a cool tricks system for a number of reasons, so the current system involves stringing up lefts and rights with absolutely no feedback but the trick text that pops up. As I've suggested before, I might do away with the combo thing and try a completely different trick system.
Thanks for the feedback guys, I'll keep everyone updated with new builds.
I just don't get how I'm supposed to stay on a wave :P and I can't manage to pick up any of those orby type things. I like blowing up Ski Jets, but the politically correct will have a nit to pick there. The question is what attitude are you aiming at with your game - is its like the PS game Pain or is it like Tony Hawk or even cleaner than that? :)
Gooood stuff :)
I'm glad the movement makes sense after a while. It does definitely take some getting used to, and when I've fixed some of the movement bugs I hope it begins to feel really natural, even if the player doesn't know anything about surfing. Realism is far from a priority here.
@Tuism A tip for keeping up with the waves: "Paddle" left and right quickly (tapping left/right) while on the wave to keep ahead of it. This doesn't make a lot of sense I know, but my hope is that after playing for a while, the player's hand begins to hurt a little and it becomes a real battle to keep paddling. That's not intended to be nearly as sadistic as it sounds :P
I'm not concerned about the political correctness aspect when it comes to jet ski hate :D We do much more violent and disgusting things in games on a frequent basis, and I'll have a longer think about how to approach the tone of the game when I implement surfing on sharks (which is gonna happen everyone), and riding them into jet skis.
I understand that you have your reasons for not including a more involved trick system, but it's something that I would love to see coming up next in the development process. ;)
In fact, that's quite relevant to what you were saying about the tricks too. I suppose I was a little put off with the system because of how little trick feedback I was able to put in for the compo, but if I get some nifty character animations in, the key combo system might be the way to go.
Though I'm still adamant about prototyping a trick system where you can physics-up your own tricks while in mid air. Either way, I'll work on making the trick system more fun.
I have no idea why I'm modelling him with his eyes closed.
@rumor Thanks, that would be awesome!
Surf Champ:
http://www.worldofspectrum.org/infoseekid.cgi?id=0005078
http://paradiseperfectboatrescue.com/
It's a fun lil' game ^.^
@WelshPixie That does look like a fun little game, and the aesthetic is really appealing. It reminds me quite a lot of Darwinia, with the exposed polygon edges. I'm very tempted to get someone to help me add some really juicy (or watery) shaders and effects to the ocean.
Thanks guys!
A rough idea of what's been added and changed:
- Added board motion for tricks - tapping a series of keys while in the air will spin and flip your board around accordingly
- Tweaked a few more values for speed, jumping, etc.
- Added a character model, with temporary rigging (note the jellylegs) and standing/lying animation, but no texture yet
- Added red ball pickups which increase the wave size slightly, and blue ones which send you flying upwards into the clouds to do a bullet time trick bonanza
- End of round summary screen (not all stats are in though)
- The yeti is gone :`(
- But it'll be back at some point
Give it a try and let me know what you think. In a little while I'll post about the feedback I got at the meetup last night, and what I think I might add and change in response to it.
Some feedback!
I like that you are cutoff by the sun setting. This feels very thematic.
I feel like it needs mad-libs procedurally generated trick names.
Tiny Wings had a similar mechanic, except in Tiny Wings collecting sunlight would push back the sunset. Note how a big sun begins to dip on screen a bit before the player is cutoff by nighttime.
There's one part of actual surfing that I feel is very well designed.
Waiting for a wave is a very good example of a Skinner box. Waves are kind of random, though they do come in sets (of around 7 I believe). So there is a fair bit of risk reward going on in surfing, because taking a wave always means you might miss the really good wave, and taking a bad wave can be kind of disastrous. So predicting waves in actual surfing, and learning to read the complex physics simulation of the ocean, is a big part of the enjoyment of the game.
The sun setting on screen thing would definitely be a really nice touch! As @dislekcia pointed out in the compo crit, it would be nice if there was a more meaningful reason to play (and consequent end condition) than just a time limit, but I would like to keep the time limit as a game mode, and add more campaign-like modes later. And while there is a time limit thing, the sun setting visual would be great to add. Early on, I actually wanted to incorporate a lot of those visual/interface indicators in the game world, however unrealistic it might be. So, when there was a beach, I wanted an ever-present buoy that showed you the distance from the beach. And perhaps a giant boat in the background with a scoreboard or something. It would just be really nice to remove the superimposed interface and show everything in the world, so I'll explore that, and the sun-setting, in the future.
Procedural trick names - awesome idea. I can't stop thinking of SpaceTeam and those partly procedural (I think?) control names. I'd like to do something similar with the trick names, and given how there's no real link to actual surfing tricks and terminology, it could work quite well. What I'm trying to work out at the moment is a fun way to string tricks together. What I'd like is to have small tricks made up by a few key presses, but when certain tricks are chained, they form a new trick.
So:
[L] + [R] = "Kick flip"
[R] + [L] = "Inverse kick flip"
KF + IKF + KF + IKF = "{Mad procedural trick name}" as well as a crazy new animation
Anyway, there's still a lot of space to play around there. However, as per some of the feedback I got, a lot of people really just like riding the waves (which is great), so I don't want to put all my time into the tricks right now and pass on the wave riding joy!
I really like that point about the Skinner box too. To be honest, I need to have another look at that stuff on the Skinner box because I think I skimmed and missed some of it, but I understand what you're saying about the risk and reward of wave catching. I may well incorporate an element of having to quickly sum up a wave and decide whether it's worth catching, as you do in real surfing. I also had an idea about having bigger and better waves the further you got from the shore. My only problem with adding "strategy" to wave catching is has potential to slow the game down quite a bit. What I might do, is make it more of a thing to carefully path your way around a wave. At the moment, you can hit nicely-shaped bits of the wave, and find steeper areas for more boosting, and I might even add some code that specifically makes a wave collapse from one direction, rather than all at once. Anyway, I'll see, but I kinda want the player to be surfing 95% of the time. The other 5% of the time should be about killing jetskis.
--- Thoughts on the feedback from the meetup night ---
I got plenty of interesting and quite varied feedback from the meetup, thanks guys! There was one main point that I thought about the most, and I have an idea in mind, but it may convolute things.
People seemed to enjoy quite different kinds of play - simple cruising on the wave, carving around, going for the pickups, or jumping and doing tricks. This is really cool, but then there were people playing who felt that the control of the surfer didn't really feel right for what they were trying to do. @Raxter pointed out that in actual surfing, the surface of a steep wave should give the surfer a much greater boost, pushing him beyond the wave, and one of the reasons for carving is to turn back to the wave so you can get back on that slope, which in turn gives you more momentum. A bunch of people also said that the carving felt more like turning on one axis (which it is, at the moment) and suggested some useful ways to make it feel more like carving and less sluggish as it is now. I'm definitely gonna work on these things to try and get the movement feeling even more tactile and fun.
Seeing how people went for different play styles got me thinking about adding a kind of "class" system, where you can pick a surfing style with modifications to stats. I got stupidly excited about thematically tying this in with the whole "Legends" theme, and having weird coat-of-arms things to represent the style, and epic fantasy names for them! So, if you preferred staying on the wave (mostly straight), you'd pick the "Wave Warrior", with better paddling speed, forward momentum, but crappy jump height and trick speed. On the other hand, if you enjoyed jumping, you'd pick the "Trickster", with better jumping and trick speed, but poor carving.
Anyway, it's just an idea, and one that veers dangerously towards too much content at this point, but it would be pretty straightforward and useful to apply the variant stats, just to have a quick way to prototype different derivatives of the movement and see what works. When people are playing and comment on the jumping not feeling right, or spinning speed being too slow, they could try a slightly different set of stats and see if it feels better.
-----------------
Wow, apologies for the novel! Thanks again for your guys' feedback, and let me know what you think about the ideas proposed here.