【西川善司が語る”ゲームの仕組み” Vol.2】いつもの日常とゲームの世界では時間の流れ方が
前回は「3Dグラフィックスベースのゲームの映像がどのように出来ているのか」について、「視点」の話を中心に解説しました。今回のテーマは「ゲームの根本的な成り立ち」について。「
gamemakers.jp
【西川善司が語る”ゲームの仕組み” Vol.2】いつもの日常とゲームの世界では時間の流れ方が違う?ゲームは”離散時間”で出来ている
[니시카와 젠지가 말하는 “게임의 구조”Vol.2]언제나의 일상과 게임의 세계에서는 시간의 흐르는 방식이 다르다? 게임은 “이산 시간“으로 되어있다.
2022.11.11
現実世界の時間の流れは"連続"時間
현실세계의 시간 흐름은 “연속”시간
我々が住んでいる現実世界には時間が流れていますよね。もし、この時間が止まったらどうなるでしょうか。
우리들이 살고있는 현실세계에서는 시간이 흐르고 있습니다. 혹시, 이 시간이 멈춘다면 어떻게 될까요?
そう、みんなピタっと止まって動かなくなるでしょう。そういう「時間が止まる」系の物語は漫画やアニメの世界では良く用いられるモチーフですが、実際、時間が止まった世界を見たことがある人はいません。
그렇습니다. 모두 딱 멈춰서 안 움직이게 되겠죠. 그런 ‘시간이 멈춘다’ 계의 이야기는 만화나 애니메이션의 세계에서는 자주 이용되어지는 모티브지만, 실제, 시간이 멈춘 세계를 본적이 있는 사람은 없습니다.
なぜなら現実世界では常に時間が流れていますし、仮に止まった瞬間があったとしても、我々にその事象を知覚することはできません。知覚にも時間が必要だからです。
왜냐하면 현실세계에서는 항상 시간이 흐르고 있고, 설령 멈춘 순간이 있다고 해도, 우리들에게 그 사상을 지각하는 것은 불가능합니다. 지각에도 시간이 필요하기 때문입니다.
それはそれとして、我々の現実世界の時間についてもう少し深く考えてみます。
그건 그렇다 치고, 우리들의 현실세계의 시간에 대해서도 조금더 깊이 생각해봅니다.
時間は1分が60秒、1時間は60分…みたいな感じで捉えられていますよね。実生活で、よく用いられる時間の最小単位は1秒でしょうか。「そんな簡単なこと、”秒”で終わらせられるぜ」と強がったことのある人、いっぱいいると思います。
시간은 1분이 60분, 1시간은 60분…같은 느낌으로 잡혀져 있습니다. 실생활에서, 자주 이용되어지는 시간의 최소단위는 1초 일까요. “그런 간단한 것, ”초“로 끝낼수 있다고“라고 쎈척한적 있는 사람, 많이 있다고 생각합니다.
ただ、ストップウォッチを手に取って、徒競走のタイムを計測すれば、その表示画面上では1秒よりも小さい単位の数字が目まぐるしく動いていることに気がつきます。我々の時間は1秒よりも小さい単位で流れていることに気が付く瞬間です。
단지, 스톱워치를 손으로 잡아서, 달리기 시합의 타임을 계측 한다면, 그 표시화면상에서는 1초 보다도 작은 단위인 숫자가 어지럽게 움직이고 있는 것을 알게 됩니다. 우리들의 시간은 1초 보다도 작은 단위로 흘러가고 있는 것을 알게 되는 순간입니다.
さて、薄型テレビの各画素は、電荷を与えることで指定の色に変化しますが、瞬間的に変わっているわけではありません。たとえば液晶画素の場合は、指定の色に変化が終わるまでに数ミリ秒掛かります。この時間を映像機器の世界では「液晶画素の応答速度」と呼んだりします。ちなみに1ミリ秒は1,000分の1秒で、1msと記載されます。最新のゲーミング液晶モニター製品の液晶画``素の応答速度はまさに1msくらいです。
그럼, 슬림형 티비의 각화소는, 전하를 주는 것으로 지정 색으로 변화하지만, 순간적으로 바끼고 있는 것은 아닙니다. 예를들면 액정화소인 경우에는, 지정 색으로 변화가 끝나기 까지에 수 밀리초 걸립니다. 이 시간을 영상기품 세계에서는 ‘액정화소 응답속도’라고 부르거나 합니다. 참고로 1밀리초는 1,000분의 1초로, 1ms라고 기재됩니다.
この応答速度、有機ELになるとマイクロ秒クラスになります。1マイクロ秒は1,000分の1ミリ秒、つまり100万分の1秒で、1μsと記載します。
이 응답속도, 유기EL이 되면 마이크로 초 클래스가 됩니다. 1마이크로초는 1,000분의 1밀초, 즉 100만분의 1초로, 1μs라고 기재합니다.
これよりもっと微細な時間があります。
이것보다 좀더 상세한 시간이 있습니다.
普段、プレイしているゲームを動かしているPC(コンピュータ)やゲーム機に搭載されているメモリー(DRAM)チップに対し、CPUやGPUが「データの読み出し」を指示して、実際に、CPUやGPUに読み出したデータがやってくるまでの待ち時間(レイテンシー)はどれくらいでしょうか。
보통, 플레이하고 잇는 게임을 작동하고 있는 PC(컴퓨터)나 게임기에 탑재되어 있는 메모리(DRAM)칩에 대해서, CPU나 GPU가 ‘데이터의 읽기’을 지시해서, 실제로, CPU나 GPU에 읽어낸 데이터가 찾아올때 까지의 대기 시간(레이턴시)는 어느정도 일까요.
メモリーの種類にもよりますが、だいたい15ナノ秒くらい掛かっています。1ナノ秒は1,000分の1μ秒、すなわち10億分の1秒で1nsと記載します。豆知識ですが、ゲーム機やコンピュータに用いられるメモリーのDDR1,DDR2,DDR3,DDR4,DDR5というメモリー種別は、DDRの数字が上がるほど世代が新しく、しかも伝送速度が上がっています。しかし、CPU/GPUからの読み出し指示から、最初のデータがやってくるまでのレイテンシーは初代のDDR1からほとんど変わっていないんです。
메모리의 종류에 따라 다르지만, 대체로 15나노초 정도 걸립니다. 1나노초는 1,000분의 1μ초, 즉 10억분의 1초로 1ns라고 기재합니다. 짧은 지식입니다만, 게임기나 컴퓨터에서 이용되어지는 메모리인 DDR1, DDR2, DDR3, DDR4, DD5라는 메모리 종류는, DDR의 숫자가 높을수록 세대가 최신이고, 게다가 전송속도가 올랐습니다. 하지만, CPU/GPU에게서 읽는 지시부터, 최초의 데이터가 찾아오기 까지의 레이턴시는 초대인 DDR1에서 거의 바끼지 않았습니다.
すみません。脱線しました。
죄송합니다. 이야기가 샜네요.
では次。CPUやGPUにキャッシュメモリーが搭載されていますね。これらはSRAMというとても高速なメモリーなのですが、これのレイテンシーは数百ピコ秒です。1ピコ秒は1,000分の1ナノ秒。つまり1兆分の1秒で、1psと記載します。
그럼 다음. CPU와 GPU에 캐쉬 메모리가 탑재 되어 있습니다. 이것들은 SRAM이라고 하는 무척 고속인 메모리이지만, 이것의 레이턴시는 수백 피코초입니다. 1피토초는 1,000분의 1나노초. 즉 1조분의 1초로, 1ps라고 기재합니다.
科学の世界ではさらに微細な1,000兆分の1秒のフェムト秒(fs)の話題が出てくることがあります。現実世界において最速である「秒速約30万km」の”光”ですら1フェムト秒(1fs)の間には300ナノメートルしか進みません。1ナノメートルは10億分の1メートルで1nmと記載します。
과학 세계에서는더욱 상세한 1,000조분의 1초인 펨토초(fs)란 화제가 나올때가 있습니다. 현실 세계에 있어서 최속인 ‘초속 약 30만 km’인 “빛”조차 1펨토초(1fs) 동안에는 300나노 미터밖에 나아가지 않습니다. 1나노 미터는 10억분의 1미터로 1nm라고 기재합니다.
■時間の表記 | |||||||
人間が日常生活でよく使う最小時間単位 | 秒(s) | 1s | 1/1,000s | 1/1,000,000s | 1/1,000,000,000s | 1/1,000,000,000,000s | 1/1,000,000,000,000,000s |
液晶画素の応答時間など | ミリ秒(ms) | 1,000ms | 1ms | 1/1,000ms | 1/1,000,000ms | 1/1,000,000,000ms | 1/1,000,000,000,000ms |
有機ELやLEDの応答時間など | マイクロ秒(μs) | 1,000,000μs | 1,000μs | 1μs | 1/1,000μs | 1/1,000,000μs | 1/1,000,000,000μs |
DDRメモリーなどの応答時間など | 1ナノ秒(ns) | 1,000,000,000ns | 1,000,000ns | 1,000ns | 1ns | 1/1,000ns | 1/1,000,000ns |
キャッシュメモリーの応答時間など | 1ピコ秒(ps) | 1,000,000,000,000ps | 1,000,000,000ps | 1,000,000ps | 1,000ps | 1ps | 1/1,000ps |
先端化学や光学技術などで用いられる時間単位 | 1フェムト秒(fs) | 1,000,000,000,000,000fs | 1,000,000,000,000fs | 1,000,000,000fs | 1,000,000fs | 1,000fs | 1fs |
■시간 표기 | |||||||
인간이 일상생활에서 자주 사용하는 최소시간 단위 | 초(s) | 1s | 1/1,000s | 1/1,000,000s | 1/1,000,000,000s | 1/1,000,000,000,000s | 1/1,000,000,000,000,000s |
액정화소 응답시간 등 | 밀리초(ms) | 1,000ms | 1ms | 1/1,000ms | 1/1,000,000ms | 1/1,000,000,000ms | 1/1,000,000,000,000ms |
유기EL이나 LED 응답시간 등 | 마이크로초(μs) | 1,000,000μs | 1,000μs | 1μs | 1/1,000μs | 1/1,000,000μs | 1/1,000,000,000μs |
DDR메모리 등 응답시간 등 | 1나노초(ns) | 1,000,000,000ns | 1,000,000ns | 1,000ns | 1ns | 1/1,000ns | 1/1,000,000ns |
캐쉬메모리 응답시간등 | 1피코초(ps) | 1,000,000,000,000ps | 1,000,000,000ps | 1,000,000ps | 1,000ps | 1ps | 1/1,000ps |
첨단화학이나 광학기술등에서 이용되어지는 시간단위 | 1펨토초(fs) | 1,000,000,000,000,000fs | 1,000,000,000,000fs | 1,000,000,000fs | 1,000,000fs | 1,000fs | 1fs |
※フェムト(f)より小さい単位系としてはアト(a)、ゼプト(z)、ヨクト(y)が国際単位系として定義されている
※펨토(f)보다 작은 단위계로서는 아토(a), 젭토(z), 욕토(y)가 국제단위계로서 정의되어지고 있다.
そうそう、今、我々を苦しめているコロナウイルスは直径約100nmですから、光は1fsの間にコロナウイルス3つ分進むことが出来るわけですね。すみません、この連載ではこんな感じでたびたび脱線します。
그렇습니다, 지금, 우리들을 괴롭히고 있는 코로나 바이러스는 직경 약 100nm이기 때문에, 빛은 1fs 동안에 코로나 바이러스 3개분 진행할수 있다는 것입니다. 죄송합니다, 이 연재에서는 이런식으로 가끔 이야기가 샜습니다.
だいぶ長くなりましたが、何が言いたかったかというと、我々の現実世界に流れている時間は、どんなに小さく分割してもキリがないということです。そして、その超々微細な短時間においても、何らかのモノが動いているということです。
상당히 길어 졌습니다만, 뭐가 말하고 싶었던 건지 말하자면, 우리들의 현실세계에서 흐르고 있는 시간은, 얼마나 작게 분활해도 끝이 없다라는 것입니다. 그리고, 그 초초미세한 단시간에 있어서도, 어떤것들이 움직이고 있다는 것입니다.
やや強引な証明の仕方ですが、我々の現実世界の時間は結局のところ「連続」的に流れているということができそうです。一般に、我々の住む現実世界の時間は「連続時間」(Continuous Time)と呼んだりします。
다소 억지스러운 증명 방법입니다만, 우리들의 현실세계의 시간은 결국에는 ‘연속’ 적으로 흐르고 있다고 말할수 있을것 같습니다. 일반적으로, 우리가 살고 있는 현실세계의 시간은 ‘연속시간’ (Continuous Time)이라고 부르거나 합니다.
ゲームの世界は離散的な概念でできている
게임 세계는 이산적인 개념으로 되어져있다.
時間の概念は、ゲームではどうなっているのでしょうか。
시간 개념은, 게임에서는 어떻게 되어있을까요.
ゲームも、画面上のキャラクターの動きはスムーズですよね。サッカーのような球技系ゲームでは選手のキャラクターがフィールド上を縦横無尽に走り回りますし、選手が蹴ったボールはなめらかな弾道軌道を描いて飛翔し、そして地面に衝突すれば短い放物線を描いてバウンドもします。
게임도, 화면상의 캐릭터의 움직임은 Smooth합니다. 축구 같은 구기계 게임에서는 선수 캐릭터가 필드 위를 종횡무진으로 뛰어 다니고, 선수가 찬 공은 매끄러운 탄도궤도를 그리며 날아서, 지면에 충돌하면 짧은 포물선을 그리며 바운드도 합니다.
「ゲーム世界」の時間の流れも、我々が住む現実世界と同じで「連続」時間なのでしょうか?実は、これは違います。ゲーム世界には、”飛び飛び”の「離散時間」(Discrete Time)が流れています。
‘게임 세계’의 시간의 흐름도, 우리들이 사는 현실세계와 똑같게 ’연속‘ 시간 일까요? 실은, 이건 아닙니다. 게임 세계에서는, “띄엄띄엄“인 ‘이산시간’(Discrete Time)이 흐르고 있습니다.
連続時間と離散時間…なんだかかっこいいサイエンスな言葉の響きです。ただ、ちょっとピンときていない人も多いかもしれません。
연속시간과 이산시간…뭔가 멋진 과학적인 단어의 울림이네요. 단지, 조금 확 와닿지 않는 사람도 많을지도 모르겠네요.
次は、“離散”(Discrete)という概念についてもう少し理解を深めましょう。
다음은, “이산”(Discrete)라는 개념에 대해서도 조금 더 충분히 이해해 봅시다.
“アナログ”と”デジタル”の違い
“아날로그”와“ 디지털”의 차이
我々が住む世界はアナログ的な概念に満ちあふれた世界ですよね。
우리들이 사는 세계는 아날로그적인 개념으로 넘쳐흐르는 세계입니다.
たとえば、耳で聞こえる「音」は、上下に細かく振れまくる折れ線グラフのような波形で出来ている「音波」だということを知っている人は多いでしょう。これを音楽CDではデジタル音波として数値化して記録しています。
예를들면, 귀로 들리는 ‘소리‘는, 상하로 미세하게 흔들리는 꺾은선 그래프와 같은 파형으로 되어 있는‘음파’라고 하는 것을 알고 있는 사람은 많을것입니다. 이걸 음악CD에서는 디지털 음파로서 수치화하고 기록하고 있습니다.
音楽CDに記録されるデジタル音波は、音の強さ(音圧)を16ビット(0~65535)の範囲の数値で表現しています。
음악CD에 기록되어지는 디지털 음파는, 음의 강함(음압)을 16비트(0~65535)의 범위의 수치로 실현하고 있습니다.
音楽もそうですし、音そのものが時間経過と共に進行して鳴るものですから、この数値化を時間経過とともに行う必要があります。音楽CDでは、この数値化を1秒間に44,100回の頻度で行ったデータを記録(標本化)しています。これが、音楽CDの仕様として有名な「サンプリングビット数16ビット、サンプリング周波数44.1kHz」に相当するモノです。
음악도 그렇고, 소리 그 자체가 시간경과와 함께 진행하고 울리는 것이기 때문에, 그 수치화를 시간경과와 함께 해야할 필요가 있습니다. 음악CD에서는, 이 수치화를 1초간에 44,100회의 빈도로 한 데이터를 기록 (표본화) 하고 있습니다. 이것이, 음악CD의 사양으로서 유명한 ‘샘플링 비트수 16비트, 샘플링 주파수 44.1kHz’에 해당하는 것입니다.
音楽CDは、なだらかな連続した曲線である現実世界のアナログ音波の波形を一定頻度で数値化したことで、連続性が欠落したカクカクのデジタル波形になりました。
음악CD는, 완만한 연속된 곡선인 현실세계의 아날로그 음파의 형태를 일정빈도로 수치화 한 것으로, 연속성이 결핍된 각져있는 디지털 파형이 됩니다.
このカクカクとした、あるいは飛び飛びの概念を「離散的」といいます。
이 각져있는, 또는 띄엄띄엄인 개념을 ‘이산적’ 이라고 합니다.
デジタルは「0と1の世界」などと形容されることがよくありますが、デジタルは「離散的な概念」と言い換えることもできるかと思います。
디지털은 ‘0과 1의 세계’ 등으로 형용되어질 때가 많습니다만, 디지털은 ‘이산적인 개념’이라 바꿔 말할수 있다고 생각합니다.
コンピュータは、連続的なものを取り扱うよりも、離散的なものを取り扱うことが得意です。実際のところ、コンピュータの世界では連続的な概念を取り扱うことができないので(≒困難なので)、離散的な概念(≒デジタル的な概念)で扱うことで連続的な概念を近似して捉えることにしているという理解でもいいかもしれません。
컴퓨터는, 연속적인 것을 처리하기 보다도, 이산적인 것을 처리하는 것을 잘합니다. 실제로는, 컴퓨터 세계에서는 연속적인 개념을 다룰수가 없기 때문에(≒곤란하기 때문에), 이산적인 개념(≒디지털 적인 개념)으로 취급하는 것으로 연속적인 개념을 근사적으로 파악하는 것으로 하고 있다라고 이해해도 좋을지도 모르겠습니다.
そうそう、ゲームやコンピュータで取り扱う離散的なものとして分かりやすい物には、映像の解像度がありますよね。
그렇습니다, 게임이나 컴퓨터에서 처리하는 이산적인 것으로서 이해하기 쉬운 것으로는, 영상의 해상도가 있습니다.
我々の住む現実世界の情景には、1920×1080ピクセルのような固定的な数量で表される解像度の概念はないですよね。我々の肉眼を通して見た情景は、その眼球内の網膜に実装された視細胞の数や密度に依存した「解像度的な概念」は存在し得ますが、現実世界そのものの解像度は連続的、というかある意味では無限大といえます。
우리들이 사는 현실세계의 정경에는, 1920×1080픽셀과 같은 고정적인 수량으로 나타내어지는 해상도의 개념은 아닙니다. 우리들의 육안을 통해서 본 정경은, 그 안구내의 망각에 실장되어진 시세포의 수나 밀도에 의존한 ‘해상도적인 개념’ 은 존재할수 있지만, 현실세계 그자체의 해상도는 연속적, 라고할까 어느 의미로는 무한대라고 말할수 있습니다.
一方、ゲームで生成される情景は無限大の解像度で生成できませんから、GPUの性能に合わせて、1920×1080ピクセルのような離散的な解像度の映像として生成しているわけです。年々GPUの性能も向上していることもあり、最近のゲーム機では4K(3840×2160ピクセル)解像度を取り扱えるようになりましたが、これももちろん連続的なものではありません。
한편, 게임에서 생산되어지는 정경은 무한대의 해상도로 생성하지 못하기 때문에, GPU의 성능에 맞춰서, 1920×1080 픽셀과 같은 이산적인 해상도의 영상으로서 생성하고 있는 것입니다. 매년 GPU의 성능도 향상하고 있는 것도 있고, 최신 게임기에서는 4K(3840×2160픽셀)해상도를 처리할수 있도록 되었지만, 이것도 물론 연속적인 것은 아닙니다.
ゲーム内の離散時間とフレームレートの関係
게임 안에서 이산시간과 프레임레이트의 관계
コンピュータは離散的な概念を取り扱うのが得意ということを理解してもらったところで、「ゲームの中で進行する時間」に話を戻すことにします。
컴퓨터는 이산적인 개념을 처리하는것이 특기라는 것을 이해했다는 점에서, ‘게임 속에서 진행하는 시간’으로 이야기를 돌리겠습니다.
コンピュータ上で動かすゲームは、やはり時間進行の概念を離散的に捉えています。離散時間は「デジタル時間」と言い換えてもいいでしょう。冒頭で、現実世界の時間進行を超微小なピコ秒まで見つめてきましたが、ゲーム内の時間進行はどこまで微小に分解できるのでしょうか。
컴퓨터 상에서 돌리는 게임은, 역시 시간진행의 개념을 이산적으로 파악하고 있습니다. 이산시간은 ‘디지털 시간’이라고 바꿔 말해도 되겠지요. 서두에서,현실세계의 시간진행을 초미세한 피코초까지 봐왔습니다만, 게임내의 시간진행은 어디까지 미세하게 분해할수 있을까요.
それは大体、16.666…ミリ秒(ms)くらい…とおもってもらっていいと思います。
이건 대충, 16.666…밀리초(ms)정도…라고 생각해도 좋습니다.
「見覚えのある数値だな」と気が付いた人もいるかもしれません。
‘본적 있는 수치네’라고 눈치챈 사람도 있을지도 모르겠습니다.
そう、この「16.666…ms」(以下、16.67msと四捨五入して略記)は、60分の1秒のことです。
그렇습니다. 이 ‘16.666…ms’ (이하, 16.67ms로 반올림해서 기록)은, 60분의 1초인 것입니다.
少しずつ分かってきましたね。ゲーム内の”離散”時間進行は、ゲーム映像の滑らかさの基準としてよく用いられる「フレームレート」(Frame Rate)と深く関係しているのです。
조금 씩 알게 되었군요. 게임내의 “이산”시간진행은, 게임영상의 매끄러움의 기준으로서 자주 이용되어 지는 ‘프레임 레이트’ (Frame Rate)와 깊게 관계하고 있습니다.
毎秒60コマ、すなわち60fps(Frames Per Second)で進行しているゲームは60分の1秒ペースの離散時間で進行しています。スムーズに動いて見えるゲームも(毎秒60コマのゲームの場合であれば)、実は16.67ms間隔の飛び飛びの離散時間で、ゲーム世界で起きている全ての出来事を計算して、次のゲーム世界の状態を更新しているのです。
매초 60코마, 즉 60fps(Frames Per Second)로 진행하고 있는 게임은 60분의 1초 페이스의 이산시간으로 진행하고 있습니다. 스무스하게 움직이고 보이는 게임도 (매초 60코마인 게임의 경우라면), 사실은 16.67ms간격의 띄엄띄엄인 이산시간으로, 게임세계에서 일어나고 있는 모든 일을 계산해서, 다음 게임세계의 상태를 갱신하고 있다는 것입니다.
連続するコマの中で、キャラクターの位置や物理シミュレーション、アニメーションが更新されている(実際、16.67ms単位でここまでの変化があるわけではないので、あくまでイメージとして受け取って欲しい)
연속하는 코마 속에서, 캐릭터의 위치나 물리 시뮬레이션, 애니메이션이 갱신되어지고 있다 (사실, 16.67ms 단위로 지금까지의 변화가 있을리가 없기 때문에, 어디까지 연상해서 받아주었으면 좋겠다)
高速で動く物体が壁をすり抜ける?
고속으로 움직이는 물체가 벽을 빠져나오다?
サッカーゲームの例で行けば、フィールドを駆け回る選手キャラの手足の動きは16.67ms間隔で計算されます。選手キャラが蹴ったボールの軌道の計算、すなわち物理シミュレーションの演算も16.67ms間隔で行われます。非常に高速に動いている物体(オブジェクト)の物理シミュレーション演算は、たとえ60fpsのゲームであっても16.67ms間隔で計算していたのでは不都合が出てくる場合があります。
축구게임의 예시로 간다면, 필드를 뛰어다니는 선수 캐릭터의 손발의 움직임은 16.67ms 간격으로 계산되어집니다. 선수 캐릭터가 찬 공의 계도의 계산, 즉 물리 시물레이션의 연산도 16.67ms 간격으로 행해집니다. 엄청나게 고속으로 움직이고 있는 물체(오브젝트)의 물리 시물레이션 연산은, 설령 60fps인 게임이라고 해도 16.67ms 간격으로 계산하고 있다는 것은 사고가 발생할 때가 있습니다.
ここで、テニスや野球のような小さめのボールを取り扱うゲームを考えてみましょう。このボールを時速150kmで飛ばします。1時間に150km飛ぶボールは1秒間に41666.6mm(=150,000,000mm÷3600秒)、大体42mくらい進みます。60fpsのゲーム、つまり、16.67msの間にこのボールが進む距離は約694.44mm(≒41666.6÷60)です。1フレームあたり約70cmくらい進むことになります。
여기에서, 테니스나 야구같은 조그마한 공을 처리하는 게임을 생각해 봅시다. 이 공은 시속 150km로 날아갑니다. 1시간에 150km 나는 공은 1초간에 41666.6mm(=150,000,000mm÷3600초), 대충 42m 정도 나아갑니다. 60fps인 게임, 즉, 16.67ms 동안에 이 봉이 나아가는 거리는 약 694.44mm(≒41666.6÷60)입니다. 1프레임당 약70cm 정도 진행하게 됩니다.
たとえば、この時速150kmで飛んできたボールが、厚さ40cmの壁にボールが当たるか当たらないかの判定を行うとき、物理シミュレーションや衝突判定の実装の仕方によっては失敗することがあります。なんと、離散的な時間の概念で進むゲームでは、ボールが壁を突き抜けてしまうことがあり得るのです。
예를들어, 이 시속 150km로 날아왔던 공이, 두께 40cm인 벽에 공이 맞을지 안맞을지의 판정을 할 때, 물리 시뮬레이션이나 충돌판정의 실상 방식에 따라서는 실패할 때가 있습니다. 무려, 이산적인 시간의 개념으로 진행하는 게임에서는, 공이 벽을 뚫고 나가버리는 경우가 있을수 있기 때문입니다.
16.67msごとに約70cmも進んでしまうボールが、厚み40cmの壁に衝突できるのは、このボールが壁から約30cm~約70cm離れた位置にいるときだけです。この範囲内にいると、このボールは壁をすり抜けてしまいます。
16.67ms 마다 약 70cm이나 나아가 버리는 공이, 두께 40cm인 벽에 충돌할수 있는 것은, 이 공이 벽에서 부터 약 30cm ~ 약 70cm 떨어진 위치에 있을 때 뿐입니다. 이 범위내에 있으면, 이 공은 벽을 빠져 나와버립니다.
この話を図解したものを下に示します。なお、話を単純化するために、下の図解ではボールの大きさを無視した点での衝突判定を行っています。
이 이야기를 그림으로 설명한 것을 아래에서 표시하겠습니다. 또한, 이야기를 단순화하기 위해, 아래의 도해에서는 공의 크기를 무시한 점에서의 충돌판정을 하고 있습니다.vvvvvvvvvvvvvv
設計がやや甘めなゲームでは、こうした珍現象が実際に起こることがあります。こうした珍現象が起きてしまうのは、やはりゲーム世界が離散時間で処理されているからです。
설계가 조금 허술한 게임에서는, 이런 기현상이 실제로 일어날 때가 있습니다. 이러한 기현상이 일어나 버리는 것은, 역시 게임 세계가 이산시간으로 처리되어지고 있기 때문입니다.
では、このような珍現象が起きないようにするにはどうしたらよいのでしょうか。
그럼, 이러한 기현상이 일어나지 않도록 하기에는 어떻게 하면 좋을까요.
直接的な対策は、この60fps、すなわち16.67ms間隔で進行している離散時間を縮めてやればいいことになります。
직접적인 대책은, 이 60fps, 즉 16.67ms 간격으로 진행하고 있는 이산시간을 줄여서 하면 좋게 됩니다.
たとえば、前出の時速150kmのボールと厚み40cmの壁の衝突の事例で行けば、物理シミュレーションや衝突判定を120fps、8.33ms間隔で行えば、「壁のすり抜け」現象は免れそうです。というのも、時速150kmのボールは120fps、8.33ms間隔では約347.22mm(≒41666.6÷120)だけ進むことになり、この進行距離は、壁の厚み40cmよりも小さいので必ず、壁に衝突しますね。
예를 들면, 앞에서 나온 시속 150km의 공과 두께 40cm인 벽의 충돌 사례에서 간다면, 물리 시뮬레이션이나 충돌판정을 120fps, 8.33ms 간격으로 행한다면, '벽의 빠져나감' 현상은 면할 것 같습니다. 왜냐하면, 시속 150km의 공은 120fps, 8.33ms 간격에서는 약 347.22mm(≒41666.6÷120)만 나아가게 되어, 이 진행 거리는, 벽의 두께 40cm보다도 작기 때문에 반드시, 벽에 충돌합니다.
このように、とても速い動きを取り扱う一部のゲームでは、映像のフレームレートよりもより細かい微小時間間隔、たとえばフレームレートの2倍、3倍、4倍といった微小時間間隔で物理シミュレーションを行ったりすることがあります。実際にレーシングゲームなどでは、こうした実装になっている作品が存在します。
이렇듯, 매우 빠른 움직임을 처리하는 일부 게임에서는, 영상의 프레임 레이트 보다도 보다 미세한 미소시간 간격, 예를 들면 프레임 레이트의 2배, 3배, 4배라는 미소시간 간격으로 물리 시뮬레이션을 하거나 할 때가 있습니다. 실제로 레이싱 게임등 에서는, 이러한 실장으로 되어 있는 작품이 존재합니다.
Xbox360向けのレーシングゲーム「FORZA MOTORSPORT2」ではゲーム映像のフレームレートは60fpsだが、車両物理シミュレーションは6倍の360fps相当の離散時間で行っていた
Xbox360용인 레이싱 게임 'FORZA MOTORSPORT2'에서는 게임 영상의 프레임 레이트는 60fps이지만, 챠량 물리 시뮬레이션은 6배인 360fps 상당인 이산시간으로 하고있다.
その理由は、時速300kmで走行しているスポーツカーの車両物理シミュレーションを60fps、16.67ms間隔で演算していたのでは1.3mおきになってしまう
그 이유는, 시속 300km로 질주하고 있는 스포츠카의 차량 물리 시뮬레이션을 60fps, 16.67ms 간격으로 연산하고 있어서는 1.3m 간격으로 되어 버린다
360fps、2.8ms間隔で行えばこれを0.2m(20cm)単位の精度で計算できるようになる。当時、同作の開発チームは、高速走行状態の自動車の正確な姿勢演算を行うには、この離散時間精度が求められると判断した
ただ、いずれにせよ、ゲームが離散時間の進行で出来ている事には変わりはありません。そう考えると、現実世界って凄いですね。
360fps, 2.8ms 간격으로 간다면 이것을 0.2m(20cm) 단위인 정밀도로 계산할수 있도록 된다. 당시, 같은 작품의 개발 팀은, 고속질주상태인 자동차의 정확한 자세연산을 하기에는, 이 이산시간정밀도가 요구되어진다고 판단했다
단지, 어쨌든 간에, 게임이 이산시간 진행으로 만들어 지고 있는 것에는 변함은 없습니다. 그렇게 생각했더니, 현실세계란 대단하네요.
おわりに
마지막으로
今回は、ゲームにおける時間進行が離散時間で行われていることを解説してきました。
이번 회는, 게임에서 시간진행이 이산시간으로 행해지고 있는 것을 해설 했습니다.
この事実が「ゲームのフレームレートと関係」に深く関わっていることも理解できたのではないかと思います。
이 사실이 '게임의 프레임 레이트와 관계'에 깊게 관계하고 있는 것도 이해 한것은 아닐까하고 생각합니다.
最近では、ゲームを60fpsより高いフレームレートでプレイすることが、ゲームを競技的に楽しむeSportシーンなどを中心に広がってきていますよね。
최근에는, 게임을 60fps 보다 높은 프레임 레이트로 플레이하는 것이, 게임을 경기적으로 즐기는 eSport 씬 등을 중심으로 넓어져 오고 있습니다.
しばしば「ゲームをそんなハイフレームレートでプレイする意味ってあるの?」と言われることがありますが、映像は60fpsで十分だとしても「ゲーム世界の物理現象を、現実世界の物理現象に近づけるためには必要なのかな…」と思えたりするかもしれません。
때때로 '게임을 그런 하이 프레임 레이트로 플레이 하는 의미가 있어?'라고 들을때가 있습니다만, 영상은 60fps으로 충분하다고 해도 '게임 세계의 물리현상을, 현실세계의 물리현상에 가깝게 하기 위해서는 필요한걸까…'라고 생각하거나 할지도 모릅니다.
もっとも、上で例示してきたような「ゲーム物理の不具合」問題については、離散時間を60fps、16.67msのままで高精度な物理シミュレーションを行うアイディアも出てきています。たとえば、速度情報をあえて持たず、しかも離散時間精度にそれほど依存しない高品質な結果が得られる「位置ベースの物理シミュレーション」(Position Based Dynamics)という概念のゲーム物理がその一例です。このあたりの話題は専門的になるので、興味がある人は各自調べてみてください。
가장, 위에서 예시해 온 것 처럼 '게임 물리의 오류' 문제에 대해서는, 이산시간을 60fps, 16.67ms인 채로 고정밀도한 물리 시뮬레이션을 하는 아이디어도 나오고 있습니다. 만약, 속도정보를 굳이 얻지 않고, 게다가 이산시간정밀도에 그 정도로 의존하지 않는 고품질인 결과를 얻을 수 있는 '위치 기반 물리 시뮬레이션' (Position Based Dynamics)라는 개념인 게임 물리가 그 일례입니다. 이 정도의 화제는 전문적으로 되기 때문에, 흥미가 있는 사람은 각자 알아봐 주세요.
ところで、学校の物理の教科書に出てくる運動方程式の数々は、連続時間を基準にして書かれています。もし、今回取り上げた連続時間と離散時間の概念に興味を持ったのであれば、そうした運動方程式の数々を、60fps、16.67msの離散時間ではどういう風に考えればいいのか、ぜひ想像を巡らせてみてください。実際、これがゲームに物理シミュレーションを実装する際のアイディアの起点になってきます。
그런데, 학교 물리 교과서에서 나오는 운동방정식의 다수는, 연속시간을 기준으로 해서 적혀지고 있습니다. 혹시, 이번에 이야기한 연속시간과 이산시간의 개념에 흥미를 가졌다라면, 그런 운동방정식의 다수를, 60fps, 16.67ms의 이산시간으로는 어떤식으로 생각하면 좋을지, 꼭 상상해 보세요. 실제, 이것이 게임에 물리 시뮬레이션을 실장할 때의 아이디어의 기점이 됩니다.
ピタッと | 딱, 똑 |
事象(じしょう) | 사건, 현상 |
徒競走(ときょうそう) | 달리기 경주 |
薄型(うすがた) | 슬림 형 |
液晶(えきしょう) | 액정 |
〜によらない | ~에 따라 다르다 |
すなわち | 즉, 곧, 바꿔 말하면, 다름 아닌 |
だいぶ | 상당히, 어지간히, 꽤 |
やや | 약간, 다소, 조금, 잠시 |
強引(ごういん) | 억지, 강제 |
結局(けっきょく)のところ | 결국에는 |
飛翔(ひしょう) | 비상 |
放物線(ほうぶつせん) | 포물선 |
飛び飛び(とびとび) | 띄엄띄엄, 건너 뛰어 |
ピンとくる | 감이 잡히다, 느낌이 오다 |
理解を深める(りかいをふかめる) | 충분히 이해하다 |
標本化(ひょうほんか) | 표본화, 샘플링 |
なだらか | 완만함, 온화함, 순조로움 |
欠落(けつらく) | 결핍 |
カクカク | 모나다, 각져있다 |
近似(きんじ) | 근사, 유사 |
肉眼(にくがん) | 육안 |
細胞(さいぼう) | 세포 |
ます+~得る(うる) ます+~得ます(えます) |
~할 수 있다. |
冒頭(ぼうとう) | 서두 |
見つめる(みつめる) | 주시하다, 응시하다 |
微小(びしょう) | 미세 |
四捨五入(ししゃごにゅう) | 시사오입, 반올림 |
コマ | 코마, 한 장의 그림이 몇 프레임까지 유지 됐느냐를 표시하는 용어 |
すり抜ける(すりぬける) | (틈 사이등을) 빠져나오다 |
演算(えんざん) | 연산 |
図解(ずかい) | 도해 |
珍現象(ちんげんしょう) | 기현상 |
免れる(まぬがれる) | 면하다 |
というのも | 왜냐하면 (앞에서 말한것이 뒤에 말하는 이유나 원인에서 필연적으로 발생한 것을 나타냄) |
~のでは | ~해서는 |
精度(せいど) | 정밀도 |
いずれにせよ | 어느 쪽이든, 어쨌든(간에) |
競技(きょうぎ) | 경기 |
数々(かずかず) | 다수, 여러 가지 |
想像を巡らせる(そうぞうをめぐらせる) | 상상하다 |
'일본어' 카테고리의 다른 글
COVER '홀로그라' 팀이 모델링 디렉터와 애니메이터를 모집중. 핵심 인력에게 새 프로젝트의 이면을 묻다. (0) | 2024.09.16 |
---|---|
[니시카와 젠지가 말하는 "게임의 구조" Vol.1]3D게임 그래픽의 기초가 되는"카메라의 개념"을 일러스트로 해설 (0) | 2024.01.29 |
“실재감”있는 분위기로 캐릭터를 매력적으로 보여주는 ‘파이어 엠블렘 인게이지’ (0) | 2024.01.23 |
댓글