In a 2D platforming game of any kind, how you design the jump defines a tremendous amount of how the game is going to feel. Since Wayward will indeed have 2D platforms, jumping is naturally the first thing we prototyped. We’re still quite early in development, and things are changing all the time, but I thought I’d take you through some of our early thinking, walk through a little basic design, and discuss a few interesting tidbits on jumping. 


 2D 로 구성된 게임이라면, 점프를 어떻게 설계하는 지에 따라,  게임에 대한 느낌이 크게 달라지게 됩니다. Wayward 는 2D 플렛폼으로 되어 있기 때문에, 점프라는 요소는 우리가 프로토타입을 만든 후, 첫번째로 고려하게된 부분입니다.  우리는 여전히 개발 초기이며, 항상 변화하고 있지만, 지금까지 우리가 해온 몇가지 기본 설계를 통해, 점프에 관하여 논의해보겠습니다.



DEGREES OF FREEDOM (자유도)


 The simplest version of jumping requires knowing initial vertical velocity and acceleration due to gravity to determine character height as a function of time during the jump:

 

점프의 가장 간단하게 나타내면, 절대 수직 속도와, 캐릭터 높이에 의해 결정되는 중력에 영향을 받는 가속도의 함수로 나타낼 수 있습니다.




This is the standard projectile motion equation from Newtonian mechanics, and yields a familiar parabolic trajectory which is more or less how jumping works in the real world. You could use a different model (like going for a more square-ish curve than a parabola), but humans are surprisingly attuned to parabolic motion. Players tend to feel that something is off when they don’t get that parabolic arc.


이것은 뉴턴 역학의 표준 발사체 운동 방정식입니다. 이것은 현실 세계의 점프 운동에 대하여, 친숙한 포물선 궤적을 그리고 있습니다. 당신은 또 다른 모델(좀 더 평면에 가까운 곡선의 어떠한 것)을 사용할수도 있지만, 사람들은 생각보다 포물선 운동에 익숙합니다. 그렇기 때문에, 플레이어들은 점프가 포물선 궤적에서 벗어나지 않을꺼라고 기대하는 경향을 가지고 있습니다.



So, assuming the usual model, one way of designing a jump is to mess around with various values for initial velocity and gravity until you find numbers that make the jump feel right. (Note: using Earth's real gravity constant probably won't work, but more on that later.) This can be a valid approach, but thinking from a design perspective, you're probably more interested in numbers besides initial velocity and gravity. You might care instead about jump duration, max jump height, horizontal jump distance (when running at full speed), time to max height, or maybe something else. All of those things can be derived from a choice of velocity and gravity, but what if you want to think of gravity and velocity as being derived from things you care about, instead of the other way around? How can you make the choices that you care about from a design perspective and let properties like gravity fall out from those choices? And where do you start? Which choices do you make, and how many can you make?


그래서, 일반적인 점프 모델을 설계하는 방법 중 하나는, 플레이어들이 점프를 잘 느낄 수 있도록 다양한 값을 대입하여, 초기 속도와 중력에 대한 적절한 값을 찾는 것입니다. (Note: 아마도 당신은 지구의 진짜 중력 계수를 사용하겠지만, 아마도 그것은 적절하게 작동하지 않을 것입니다. 이것에 대한 내용은 뒷부분을 통해서 다루도록 하겠습니다.) 이것은 올바른 방법이 될 수 있습니다. 그러나, 디자인적인 관점에서 생각해보면, 당신은 아마도 절대 속력과 중력 외의 숫자에 더 많은 관심을 가지고 있을 것입니다. 점프 지속 시간, 최대 점프 높이, 점프 거리(최대 속도로 달렸을 때), 최대 높이에 도달하는 시간 또는 그 밖의 것들에 바로 그러한 것들일 것입니다. 그 모든 것들이 속력과 중력에 의하여 결정이 됩니다. 하지만, 당신은 중력과 속력으로부터 당신이 생각하고 있는 것들을 모두 해결하려면 어떻게 해야 될까요? 그리고 어디부터 시작해야 될까요? 당신은 도대체 어떻게 해야되며, 얼마나 많은 것을 시도해야 될까요?



We can apply an approach which I call Degrees of Freedom design. The idea is that for any game mechanic (or system in general), there are a finite number of choices you can make before everything else is determined by those choices. This forces you to pick the small number of things you care about most, figure those out, and let everything else be what it has to be.


 저희는 이러한 고민 끝에, 제가 Degrees of Freedom 디자인이라고 부르는 것에 도달할 수 있었습니다. 그 아이디어는 게임 구조에 관계 없이, 유한한 숫자의 변수를 선택하고, 그 수치들에 의하여 다른 모든 것들이 결정되도록 하는 것이었습니다. 이것은 당신이 가장 중요하다고 생각하는 몇 개의 수치를 선정하고, 그것들이 다른 모든 것을 제어할 수 있도록 하는 것입니다.



In our jump equation, we know the jump is mechanically determined by two things: gravity and initial velocity. Therefore, we have two degrees of freedom. That means that as a designer, I will be able to make two choices, and everything else is determined. For me, jump height and jump duration are usually the two things I care about most for jump design, so I'll pick those two and know that I don't get to make any more choices. I've prioritized the two things I think are most important, and let everything else be determined.


 저희는 점프 방정식을 통해, 점프는 역학적으로 중력과 절대 속력, 그 2가지에 의해 결정된다는 사실을 알고 있습니다. 따라서, 우리는 2가지 degrees of freedom (이하: 자유도)를 가지고 있는 것입니다. 즉, 디자이너로서, 저는 2가지 수치를 선택함으로서, 다른 모든 것을 결정할 수 있습입니다. 저는 점프 디자인에서 가장 주의해야되는 점프 높이점프 지속시간, 그 2가지로 선택하여, 다른 모든 것을 조절할 수 있도록 하였습니다. 저는 가장 중요하다고 생각하는 2가지를 통해, 다른 모든 것을 판단하도록 한 것입니다.



Once you've decided what you care about, if you want you can do some math and then code the mechanic so that those things are the literal parameters you adjust, instead of the things that might be most straightforward to code (in this example, gravity and initial velocity). But often that step isn't required - the more useful thing is the design knowledge of how many things you have control of. In this example, I might then proceed by trying various values for velocity and gravity, but armed with the goal of hitting particular heights and durations, and the knowledge that it's possible to do so for any pair of values I like.


  원래 당신은 당신이 걱정하는 것에 대하여 조절할 수 있도록, 수학과 역학적 코드를 작성하고, 그러한 것들을  복잡하지 않은 코드로 표현하기 위하여 노력해야 됩니다. (예, 중력과 초기 속도) 그러나 종종 그 단계가 필요하지 않을 수 있습니다. 더 유용한 것은 당신이 조절할 수 있는 것에 대한 많은 디자인적인 지식입니다. 이 예시에서 저는 그 속도와 중력에 대하여 다양한 값을 시도하며 진행할 수도 있었지만, 제가 추구하는 목표에 더 직접적으로 영향을 미치는 점프 높이와 점프 지속시간 그리고 그것들에 대한 디자인적인 지식을 통해, 더 좋은 상황을 만들고 더 목표에 접근할 수 있었습니다.




VARIABLE JUMP HEIGHTS (다양한 점프 높이)


Of course, that model of jumping is too simple. Games have a long tradition of allowing players to vary the heights of their jumps by holding down the jump button for shorter or longer durations. This doesn't make a whole lot of physical sense, and not every game does it, but it is fairly common. 


물론 점프의 모델은 너무 간단합니다. 일반적으로 게임은 플레이어가 짧은 또는 긴 시간동안 점프 버튼을 누르면, 점프의 높이를 변화시킬 수 있도록 하는 오랜 전통적인 방식을 가지고 있습니다. 이것은 물리학적으로 말이 되지 않는 현상이며, 모든 게임에서 그렇게 작동하는 것도 아니지만, 매우 일반적으로 사용되고 있습니다. 



The usual way of accomplishing this is to suppress gravity while the jump button is held down, up to some maximum duration. This results in a jump motion which isn't quite projectile motion


이때, 일반적으로 사용되는 개발 방법은 점프 버튼을 최대 시간에 도달할 때까지 누르고 있는 동안, 중력을 억제하는 것입니다. 그 결과는 다음과 같습니다.



If this is height vs time, the red line is height until gravity kicks in, at which point the blue or purple parabola takes over.


만약 이것이 높이와 시간애 대한 함수라면, 빨간선은 중력에 의해 감소되고 있는 부분이며, 파란색 또는 보라색은 중력에 의해 떨어지는 부분입니다.



It's important to realize that you can't get a jump that feels quite like proper projectile motion using this scheme. That initial linear part is always going to give a bit of a float-y, jetpack-y feel to the jump.


이것으로부터 당신은 확실히 이 방식을 통해서 적절한 발사체 운동 같은 느낌의 점프를 얻을 수 없다는 사실을 알 수 있습니다.



Going back to the degrees of freedom approach, we can now think of the jump as being determined by initial velocity, gravity, and the duration of the jump suppression. It’s clear that we've got three degrees of freedom now, the third one coming from the gravity suppression timer.


다시, degrees of freedom 로 돌아가보면, 우리는 초기 속력, 중력 그리고 점프를 제어하는 시간에 의해 결정되는 점프를 생각해 볼 수 있습니다.  우리는 지금 3가지 자유도를 가지고 있지만, 세번째 것은 중력 억제 시간으로부터 구할 수 있는 값이기 때문에, 여전히 우리는 다룰 수 있는 2가지 자유도에서 벗어나지 않습니다.



I don't care about that timer directly. Note that the timer doesn't correspond to the apex of the jump - the player will continue moving upwards once gravity kicks in, until gravity "overtakes" that initial velocity. The timer is more subtle, and not something the player (or designer) will feel specifically. But I've got another degree of freedom (I still care about max height and max jump duration, as before, for my first two degrees), so what else do I care about in this new system?


 저는 시간에 대한 부분을 직접적으로 고려하고 싶지 않습니다. 시간은 점프의 핵심이 아니기 때문입니다. 플레이어는 중력을 벗어날 때까지, 일단 위쪽으로 이동하는 것만 생각할 것입니다. 시간이라는 것은 미묘합니다. 그리고 플레이어(또는 디자이너)는 시간보다 더 구체적들을 느낄 것입니다. 하지만, 또 다른 자유도 (내가 아직도 처음에 결정한 degrees of freedom 이 최대 높이와 최대 점프 지속 시간, 이렇게 2가지라는 사실을 잊지 않고 있습니다.)를 함께 다루기 위하여, 어떠한 새로운 시스템을 고려해야 될까요?



The answer probably should be related to variable jump heights. Thinking about how players process a variable jump, I'm pretty confident that they really only consider two cases: the highest jump (where they hold the button down until they hit the apex (although they didn't have to, to achieve that max jump)), and lowest jump (where they just tap on the jump button as lightly as possible). So maybe the third thing I care about is lowest jump height. I might also care about lowest jump duration, but I'm out of degrees - I have to pick one or the other, and I think jump height is more important.


 그 대답은 바로 점프 높이의 다양함에 있습니다. 저는 플레이어가 다양한 점프를 수행하기 위해, 어떠한 생각을 하게 될 것인지에 관하여, 다음 두가지 예시를 통해 매우 확신하고 있습니다. 우선 최대 높이의 점프하기 위하여, 플레이어들은 버튼을 자신이 원하는 최대 높이에 도달할 때까지 누르고 있을 것입니다. 또한, 가장 낮은 점프를 하기 위하여, 점프를 가장 가볍게 누를려고 할 것입니다.  그래서, 제가 세번째로 관심을 가지게 된 부분은 바로 가장 낮은 점프 높이입니다. 저는 가장 짧은 점프 지속시간을 고려할 수도 있지만, 그러나 나는 가장 낮은 점프 높이와 가장 짧은 점프 지속시간, 이 두가지 중에 선택하여야 하고, 저는 점프 높이가 더 중요하다고 생각하기 때문에, 점프 높이를 고려하는 선택을 하게 되었습니다.



AIR CONTROL (공중 제어)


So far we've only really covered the up and down part of the jump, but there’s a lot more to decide about what happens in the air. Specifically, how much horizontal motion control should we give the player? There are the extremes of no air control (Ghouls ‘n Ghosts games), full air control (Mega Man games), and lots in between (Mario, Metroid). Having no air control is the most “realistic” scheme for sure, but generally makes for unforgiving gameplay. Granting full air control is the most game-y scheme, allowing for ultra-precise movement and tricky platform puzzles.


 지금까지 저희는 점프의 상승, 하강에 대한 부분을 고려했지만, 실제로 공중에 떠 있는 동안에 더 많은 것을 고려해야 됩니다. 구체적으로 우리는 플레이어에게 얼마나 많은 수평 이동 제어(horizontal motion control)를 제공해야될까요? 공중에서 제어를 불가능하게 할 수도 있으며, (Ghouls'm Ghosts 게임들), 완벽한 공중 제어를 제공할 수도 있으며(Mega Man 게임들), 그 중간 합의점을 제공할 수도(마리오, 메트로이드) 있을 것입니다. 공중 제어를 제공하지 않는 것이 확실히 가장 "현실적인" 방법이지만, 일반적으로 게임들은 그것에 대하여 관대한 편입니다. 완벽한 공중 제어를 제공하는 것은 매우 정밀한 움직임과 까다로운 플렛폼 퍼즐을 제공하는, 이른바 Y축 방식의 게임들(game-y scheme)에서 주로 사용됩니다.   



Going for something in between, where you’ve got aerial momentum but can affect it to some degree mid-air, can give a nice weightiness to the jump while still giving the player room to correct errors and feel in control. That’s where we started in prototyping, but over time we kept adjusting more and more towards full air control. This was surprising at first, because we aren’t aiming for a game where precise platforming and timing was a core component of the game. But on further reflection, it became clear that we wanted more air control because we wanted less focus on platforming puzzles. By making it as easy as possible for the player to move where they want to move, we free them to focus on other aspects of the game.

 당신이 공중 회전을 하나의 게임 요소로 사용한다면, 플레이어는 정해진 규칙 안에서 대상을 제어한다는 느낌을 받을 수 있는 동시에, 좋은 무게감을 제공할 수 있습니다. 저희는 프로토 타입을 시작한 후, 시간이 지남에 따라, 공중 제어에 대하여 더 많은 조절을 시도하였습니다. 저희 게임은 정확한 착륙 위치와 타이밍이 게임의 핵심 요소로 작용하는 게임을 목표로 하고 있지 않았기 때문에, 이러한 변화는 처음에 당혹스러웠습니다. 하지만 오히려 저희는 플렛 포밍 퍼즐에 덜 집중하기를 원했기 때문에, 공중 제어를 더 명확하게 해야 한다는 것을 알게 되었습니다. 저희는 플레이어가 이동하려는 위치에 쉽게 이동할 수 있도록 함으로서, 그들이 게임의 다른 측면에 더 집중할 수 있도록 배려하였습니다.


GRAVITY, JUMP HEIGHTS, AND A WORLD IN MINIATURE (중력, 점프 높이 그리고 미니어쳐 세계)

Most games feature characters with amazingly high vertical leaps, and Wayward is no exception. Particularly in 2D games, the player can usually jump at least the character’s height, and often many times more than that. Intuitively, that translates to some combination of very strong and light characters, and very weak gravity. 

대부분의 게임들은 놀라울 정도 높은 수직 도약을 특징으로 하며, Wayward 도 예외는 아니었습니다. 특히 2D 게임에서, 플레이어는 적어도 캐릭터의 높이만큼 높은 점프를 자주할 수 있으며, 그리고 그보다 더 많이, 더 높이 뛰기도 합니다. 직관적으로 그것은 캐릭터가 힘이 쎄거나, 무게가 가볍거나 또는 중력이 매우 약하다는 것으로 해석이 가능합니다. 


Well, it turns out that weak gravity isn't what games do at all. In fact, many Mario games have gravity in excess of 8 times Earth gravity (here's a fun analysis). Since mass doesn't affect falling speed, it’s pretty easy to see that no matter how light these characters might be, gravity is crazy high. Assuming characters of normal height, that is.

좋습니다. 약한 중력이 게임의 모든 것이 아니라는 사실은 이미 밝혀졌습니다. 마리오 게임들은 사실 지구 중력의 8배에 해당하는 중력이 작용하고 있습니다. (이것은 매우 흥미로운 분석 결과입니다.) 질량은 떨어지는 속도에 영향을 주지 않기 때문에, 이러한 결과로부터 캐릭터의 가벼움에 상관 없이, 게임 내 중력이 미칠듯이 쎄다는 것을 간단하게 확인할 수 있습니다. 정상 크기의 캐릭터를 가정하면, 그렇습니다.


But is normal height the right assumption? If we imagine the characters as being a few inches tall instead of a few feet, then gravity works out to be about right. And, by extrapolating a little from the square-cube law, it makes sense that such small characters might be able to jump many times their own heights. If instead of thinking about these games as controlling life size characters, we think about them as playing with toys of those characters, then the physics start to make a little more sense. Our view into the game is like looking at model playset of the gameworld. It’s a world in miniature.

 그러나, 정상 크기라는 것이 옳은 가정일까요? 캐릭터들은 피트 단위의 크기가 아닌 인치 단위의 크기를 가지고 있기 때문에, 중력이 정상인 것처럼 작동하는 것입니다. 그리고 the square-cube 법칙에 의하여, 작은 캐릭터는 그들의 키보다 몇 배나 높이 뛸 수 있다는 사실을 유추할 수 있습니다. 만약 게임 안에서 그들을 실물 캐릭터처럼 다룰려면, 우리는 그들의 장난감처럼 그들을 생각하여야, 물리 법칙을 좀 더 잘 이해할 수 있습니다.  우리는 게임 안의 세계를 게임 세계의 한 놀이 모델로 살펴보아야 합니다. 그것은 바로 미니어처의 세계라고 할 수 있습니다.


That feeling of playing with a world rather playing inside a world is a characteristic of 3rd-person games, and especially 2D 3rd-person games. In 2D side-view games, the player usually views a large slice of the game world around the character, much more than the character would see themselves. There’s magic in evoking that feeling of “playing with” the character (and world), in contrast (or addition) to the usual immersive ideal of “playing as” the character. It’s a part of why gamers and developers alike can be nostalgic for 2D games, and a reason AtomJack decided to focus on 2D gameplay for Wayward. Exploring and seeing a world in miniature can be more playful and less daunting than being immersed in a 3D world, while still evoking a powerful sense of wonder and discovery.

 이러한 플레이 감각은 3인칭 게임, 특히 2D 3인칭 게임에서 더 많이 느낄 수 있습니다. 2D 사이드 뷰 게임에서, 플레이어는 캐릭터 주변에 펼쳐진 게임 세계의 조각들을 보이는 것보다 더 크게 느끼며 플레이하게 됩니다. 이것은 캐릭터에 몰입하여, 플레이어가 캐릭터(그리고 세계) 안에서 존재하고 있다는 느낌을 받게 만드는 마법같은 일입니다. 그것이 대부분의 게이머와 개발자들이 2D 게임에 가지고 있는 그리움이며, AtomJack 도 그러한 이유로 Wayward 를 2D 게임 플레이에 집중하도록 제작하게 되었습니다. 미니어처의 세계를 보고 탐험하는 것은 3D 세계에 몰입하는 것보다 더 재미있고, 한편으로 더 어렵기도 하겠지만, 여전히 놀라움과 새로운 발견을 느끼게 하는 강력한 감각을 제공할 수 있습니다. 



by Mohan Rajagopalan

번역: breezecu (AKA KrHammer)



원문: http://gamasutra.com/blogs/MohanRajagopalan/20140813/223251/Designing_a_2D_Jump.php


Posted by Kr해머
,