The Moon Fields

Doing the 3D platformer game jam made me reconsider how I was going to remake the platforming here.

First, I’m making the horizontal movement simpler. There were a lot of variables before I had to tweak to make the horizontal movement feel good: I had walking speed, an entire “dashing system”, Unitys’ rigidbody physics system, air control ratios, and probably more. The goal was to let the player choose between control (walking) and speed running (mashing the dash button). Now I’ve compressed this into a handful of variables and Unity’s physics system.

There are two “states” the game “tweens” your movement between. While Unity physics thinks you’re standing still, you can walk which literally means a translation in your position with infinite acceleration (think Mega Man). But as you mash the dash button and approach the maximum running speed your walking speed becomes less and less effective until it doesn’t move you at all. There’s no air control, no outside dashing vector to keep track of, etc.

Second, I’m compressing the jumping heights and lowering gravity. Jump arcs look similar, and jump timing feels the same, but this makes verticality take up less space. I can block off areas with shorter walls, and I can have more ‘floors’ in the same screen space. Before the max jump was 3 tiles (I was thinking to allow for bridges I needed player height + 1 tile), but I think I was wrong about that and can get away with 2 tile max jumps. This way I can get more vertical game space per vertical screen space. I think this will also let me have flatter arcs on projectiles which means more consistent air/ground interactions. Shooting an arrow down at an angle will still be hard to connect, but you’ll have more horizontal ranges you can reach with flatter angles.

Third, I’m fleshing out movement options. If you were in the air there was always a stomp action, but now I’m adding an air dive. It’s fairly unrealistic, but 1) since your movement options in the air are limited the dive gives you one shot to alter your trajectory 2) it looks like a dive roll, so that’s cool.

I played around with wall sliding and wall jumping during the game jam, and I’d love to try it, but I found myself having a hard time with wall jumps if I couldn’t set the camera just right. It felt a little like learning how to hadouken from the “wrong” side, except there were a lot more sides to deal with. I’d like to try wall sliding and wall jumping here, but we’ll have to see. There’s already a high skill gap, but I think if I design single player without needing those things it might work better.

2 Likes

I feel like I should be filling out a design wiki. What’s the easiest way to start a wiki?

Anyways,

testSwords

This doesn’t look too different from what I’ve made before, except a lot of it is generated on the fly. There are just a handful of keyframes and some smart animation blending. Which I think is going to make a huge difference.

Before I would come up with a lot of concepts for weapons, but in the end, I only wanted them to vary in a few ways.

  • Damage
  • Range
  • Speed (startup, action, recovery)
  • Available attacks
  • Attack strings

Animations
I find that coming up with a lot of different animations for what amounts to just a few attacks doesn’t work for me. So what I did was break down items into a few categories that can all share the same animations but have different damage, range, and especially animation timings for startup/action/recovery portions of their available attacks.

The animation timings will be really important in terms of describing the weapons via their mechanics. Heavy weapons will generally be slower, but if they’re heavy and longer reaching that means they’ll be much slower during recovery. Slowing down the startup of a dagger stab animation won’t describe weight as much as dexterity necessary to find the sweet spot.

There are other ways I want to differentiate weapons, but it’ll take some time to really figure out. I want to make sure to have weapons that don’t do a lot of damage up front, but do secondary/tertiary things. Weapons that stun or knockback are going to be really good ways to different one from another.

I think the animation categories are going to be really important. Right now I am looking at only two main categories: 1h melee, 2h melee, alternating. I am sure there will be weapon types that don’t fit this, but I’ll explore that as I bring the old weapons back:

  • Forehand (swing left)
  • Overhead (swing down)
  • Backhand (swing right)
  • Underhand (swing up)
  • Stab
  • *Special

One of the interesting things I noticed from these animations is that they break down into repeatable motions. E.g. Forehand and Overhead can both start with the same startup action. Backhand and Underhand can both start with the the same startup actions as well.

Even more interesting is that the recovery for Forehand looks really similar to the startup for Backhand and Underhand. And Backhand/Underhand seem to finish in a way that’s similar to the startup to Forehand. The repeatable left/right/left attack string is kind of baked into this? And a left/up/down string is as well?

I’ll stew on this for a while. I think I should be developing a 3D platformer w/ the engine right now, so this might take a while to implement…

8 Likes

I’m trying to make a 3D platformer with as few buttons as possible. I have the analog stick, my run/jump button, a camera button, and I use the horizontal on the right analog for moving the camera left/right. The run/jump button works like The Moon Fields and this will end up being the platforming for TMF.

The right analog stick only rotates the camera around the Y axis. The angle is 45* downward so you have equal view for the depth and the height of the platforming. I am thinking about having the right analog also control tilt, but only at discrete values. I might allow for some perspective, but we’ll see. I’m trying really hard not to, but it might be necessary.

The camera button aligns the camera to your left or right, giving a “sideview”. I reallly like it, but it is kinda weird at first. Maybe I can call it the sideview camera? It helps a lot for platforming.

Posting this here because I think I might want to incorporate some of these techniques with the camera controls: ITSP Camera Explained - YouTube

1 Like

I’ve implemented the Insanely Twisted Shadow Planet camera; that video is a good guideline for what you’re looking for. Pay very close attention to when you’re updating positions and velocities so you don’t accrue stutter.

I think the basic platformer engine is done.

The goal next is to make a level based platformer sorta like Super Mario Bros 1 crossed with idk Toree 3D (or just very basic 3D platforming). Actually, has anyone here played Toree 3D? I’d be interested in hearing your thoughts.

https://drive.google.com/file/d/1x8_lINbGGxU1NBBBX4BoQ-ihLVvXYKFP/view?usp=sharing

If anyone is interested in checking out the platforming engine, I made a small demo. It’s real bare bones (like, if you fall off you have to restart the .exe), but I think it feels good? I’d like to get feedback on the platforming. Bonus if it’s the KBM controls. A quick overview:

  • Analog Stick = Move
  • Move + tap A repeatedly = Run
  • Move + hold A = Jump
  • If you’re standing still or sliding-but-not-running you can tap A for a short hop only really useful against enemies (of which there are none) or the one portion of hurdles
  • While Jumping you can let go of the stick and tap A for a Double Jump
  • While Double Jumping you can hold the A button for a Stomp
  • While Jumping you can point in a direction and tap A for a Dive Roll
  • While Jumping you can push into a wall and hold A for a Wall Jump

The right stick rotates your camera. Lb is my smart camera rotato button. It will move to your left/right to set itself up as much of a platformer view as possible. Lt and Rt are Plant and Strafe remnants from TMF. I am unsure of the scope of this platformer… they may or may not be used?

KBM controls:
WASD for movement. Space/LMB double up as the run/jump/etc button. JK swing the camera. LeftShift is the smart camera button.

If you try it let me know. I know I have a few ideas of how to move from here (camera, for one).

Tippers: hops = 1 tile, jumps = 2 tiles, double jump +1 tile, wall jump +1 more tile. You can get a lot of height on corners with multiple double jumps, but it’s hard.

2 Likes

I guess I should’ve asked if people wanna test the platforming for me. Haha. Maybe I’ll just drop a short short short game on itch and see what the response is.

Hey, I played around with this yesterday. Some random, thoughts, hopefully not too messy and rambling:

I like the combo of the sprite character and the 3D backpack. I’m not sure the orthographic camera is great for 3D platforming though, at least for me it’s really hard to gauge depth at certain angles and it made the segment with the platform pillars more difficult to jump across than I thought it should be. Also, I understand the appeal of a button that sets the camera to better frame the platforming but I usually find it more useful to snap behind the character in these games than to their side, in profile (and if I want a side view, using the camera analog stick is sufficient (I think the orbit speed here may be a tad too fast btw but that’s a minor quibble)). As level design develops, the value of that feature will probably become clearer.

As for single button gameplay, it’s an interesting constraint and totally valid (unless Balan Wonderworld has ruined the idea for people lol) but I’m not sure the way dashing and jumping works is ideal. Having to do a little dash forward before run-jumping doesn’t feel immediately natural especially approaching the edge of platforms…unless you really want the player to train themselves to commit to a jump knowing that it won’t initiate until a few steps ahead of them. It’s an odd action to delay like that in a 3D platformer where it’s the central verb and I expect a snappy execution but it could be an interesting quirk requiring that kind of timing + spatial awareness (shades of swinging a sword in King’s Field (maybe it would be cool to do a FROM-like platformer with those kinds of input/timing considerations though hm!)). I do really like mashing that dash button and zipping around though, it feels a bit vehicular, nice. Going back to jumping though, what if you tap to jump and hold to dash? I guess in that case, you’d have to either handle jumping as an OnButtonRelease command or…well at the end of a dash, you could either cancel that OnButtonRelease jump when dashing is held a certain amount of time or else auto jump at the end of a dash if the player is still holding the run button (cancelling the OnButtonRelease jump when they go from holding the run button to not holding it anymore). Or you could initiate dashing with a double tap and then hold the button. That could either cancel the jump and start the dashing or incorporate a bit of the interrupted jump’s vertical force into the dash initiation. I don’t know! Lots of ways to go about it.

Some (possible) bugs:

  • Your “dash dust” continues along the ground, following the player from below even when they’re in the air, I’d expect it to stop doing that. Unless you want it to act as a drop shadow of sorts but…I’d just expect a regular drop shadow at that point (which would help greatly with judging angles/distances).
  • Start at the base of an incline. Move up the incline a bit and turn around to face the level ground below where you just were. Now, with the intention of jumping, dash down the slope and onto the level ground. The jump doesn’t execute.

Hope that’s helpful or at least some decent food for thought. Takes a bit to make these kinds of games feel good and nuanced, especially with a one-button execution, but I look forward to seeing more!

3 Likes

Thanks for doing this!

I totally agree. I think i’m like 75% on the ortho camera because that’s how The Moon Fields does it, and it does it that way because I want the game to render all the players the same way. I am thinking of leaning more towards traversal challenges? Re: Camera rotation - that was totally super experimental on my end. Idk if it’s good and/or easy to get, but… yeah. Glad you were able to try it out even if it didn’t work out well.

I’m really glad you noticed this. Having players plan moves out a bit is 100% what I want. To me it feels very natural to have to gain momentum and plant to get a big jump. I get that decades of gaming have trained gamers that jumping in a game is different, but… maybe level design will help players overcome this mode of thinking?

Vehicular is a really good way to describe it. I really like the idea of treating the player character as a body you have to control as opposed to just doing exactly what you want. I think there’s fun in controlling a thing, so hopefully I can get there.

3 Likes

6 Likes

The mechanics keep changing, but I think it’s for the better. I realized I need to keep the verticality as low as possible, so

Hop/backflip is neutral jump and it is still 1m tall.
Jump is forward + hold jump and is now 1m tall down from 2m.
Jump let’s do you a double jump which makes your total jump height 2m.
You can also roll out of a Jump to get extra horizontal distance.
And you can wall jump to get up to 3m.

I’m not sure about double jumping into double jumping. I know it’s a platformer thing, but I think I’m leaning away from platformer. I’m looking more at a navigation game with some platforming challenges. I think the platforming will be good enough for The Moon Fields final, and that’s all that really matters for this small game.

3 Likes

9 Likes

3 Likes

6 Likes

Unsure about the cattails but working on some water


unknown-5

10 Likes

's long as the water’s animated, it looks nice…
Edit: don’t get me wrong, no more than ~3 frames

Edit2: as for double jumping into double jumping (or flat jumping; moreover - jumping into double jumping or vice-versa) it would look and seem cool, but I don’t know how much taxation you want to put on yourself?

Is the job interesting at least? One time I helped teaching kids how to program small robots and it was super interesting to see how they engaged with it.