Marupeke-IKD

ゲームプログラマを生業としています。「マルペケつくろ~どっとコム(http://mar…

Marupeke-IKD

ゲームプログラマを生業としています。「マルペケつくろ~どっとコム(http://marupeke296.com/)」という主にプログラマ向けの情報サイトを運営しています。「ゲームってどうやったら作れるんだろう…」という戸惑いにお答えできる情報を発信していければと思います。

マガジン

  • ビビッと感じる数学パズル

  • マルペケの徒然なるプログラムのお話

    ゲームプログラマである筆者が日々の業務や趣味の中で見つけたプログラム技術について、些末に書き連ねて行こうと思います。枯れた技術も今の技術もごちゃまぜのおもちゃ箱ですが、その中に皆様のお役に立てるものがあれば幸いです。

  • Oculus Quest 2 + UnityでVR開発

    Oculus Quest 2とUnityでVRな世界を開発する方法などについて解説します。僕が得た知識のアウトプットとして掲載しようと思いますので、更新頻度はインプットの量によります(^-^;。

  • Rustやろうぜ!

    C++級のハイパフォーマンスと近代プログラムの安全性を両立し、マルチプラットフォームで実行可能なアプリケーションを同一コードから作成できる魅力たっぷりなRust。クライアントもサーバも、組み込み系までもカバーする今注目のRustで色々遊んで学んでみましょう!

  • 地面に足つくゲームプログラム

    ゲームプログラムでの普遍的な技術・設計・実装方法をご紹介。膨大なコードやリソースが必要なゲームプログラムをより頑健にする、足元をしっかり固める情報を発信致します(^-^)

最近の記事

100個の段ボールを移動する猫を探す最悪手数は?(問題)

 空の段ボールが大好きと言えば猫ちゃんで、隙あらば中に入ってご満悦です。今回はそんな箱の中の猫を探す問題。  今100個並んでいる段ボールのどこかに猫が1匹入ってまったりしています。あなたは段ボールの一つを開けて中を確認できます。一度確認して猫がいればラッキー、でも猫が他の箱に入っていたら当然中は空です。確認して箱を閉じると、猫ちゃんはあなたが見ていない隙に左右どちらかの段ボールに1つ移動してしまいます。では見つからない限り移動を続ける猫を確実に発見するのにあなたは最大で何

    • 100個の段ボールを移動する猫を探す最悪手数は?(解説)

      問題はこちら: 答え:196回 100個並ぶ段ボールの中でまったりしつつも移動している猫ちゃんを見つけるのにかかる最悪手数は196回です。これをどう算出するか解説します。 解説:猫が最初偶奇のどちらかに入っていると「仮定」する 今回の問題、やみくもに箱を開けても埒が明きません。例えば番手の低い段ボールからしらみ潰しに調べようと1番の箱を開けて、猫が移動後次に2番の箱を調べたとします。この時猫が最初2番にいて、次に1番に移動すると、猫はまんまとチェックを通過してしまいます:

      • UnityのSceneViewカメラを扱う時に知っておきたい事をまとめてみた

         Unity EditorにあるSceneView。ゲームの世界を構築するUnityの中核となる画面です。このSceneViewはゲームとは別の特別なカメラ(SceneViewカメラ)でワールドを撮影し投影しています。  普段皆さんは実はこのSceneViewカメラをマウスで操作しているのですが、Editorツールを作る時にこのSceneViewカメラをスクリプトから直接操作したくなる事があります。所がこのカメラを扱うにはゲーム用のカメラと全然違う概念が必要なんです。知らず

        • 欠けちゃった魔方陣(問題)

           魔方陣はマス内の行列斜めの数字の和が等しくなる不思議な数字の並びです。例えば3x3の魔方陣は以下の通りです:  さて、今同じ3x3の魔法陣を作ろうと思ったら以下のようにマスの一つが欠けてしまいました:  では、この欠けた所を除く8マスで行列斜めの和が等しい魔法陣を作れるでしょうか?ただし使う数字は1~8を一つずつです。 ※解説はこちら その他の問題についてはこちらからどうぞ:

        100個の段ボールを移動する猫を探す最悪手数は?(問題)

        マガジン

        • ビビッと感じる数学パズル
          203本
        • マルペケの徒然なるプログラムのお話
          49本
        • Oculus Quest 2 + UnityでVR開発
          5本
        • Rustやろうぜ!
          7本
        • 地面に足つくゲームプログラム
          12本

        記事

          欠けちゃった魔方陣(解説)

          問題はこちら: 答え:以下の通り 問題の欠けちゃったマスは上図のような数字の並びにすると魔法陣になります。行列斜めいずれも足して12になっていますよね。あれこれ試していればいずれ答えにたどり着くかとは思いますが、少し理詰めで考えてみましょう。 解説1:3x3の魔方陣を知っていれば一瞬 もし3x3の魔方陣を知っていれば今回の問題は一瞬で終わります。3x3の魔方陣は実は以下の1種類しかありません: ただし5以外の外側の数字を90度単位で回転してできる物、また上下左右を反転さ

          欠けちゃった魔方陣(解説)

          正三角形を囲う最小の正方形は?(問題)

           今回は非常にシンプルな問題。一辺の長さが1の正三角形を囲う最小の正方形の辺の長さはいくつになるでしょうか?ちなみに上図右にあるように正方形の底辺を正三角形の1辺に合わせたものは最小ではありません。もっと小さい正方形があります。  この問題、中学生の皆さんは「こんな風に囲うんじゃないかな?」という正方形の囲い方だけでOKです。高校生以上の方は長さと共に是非「なぜそれが最小なのか?」という証明にチャレンジしてみて下さい。これ、かなり奥深いですよ。 ※解説はこちら その他の

          正三角形を囲う最小の正方形は?(問題)

          正三角形を囲う最小の正方形は?(解説)

          問題はこちら: 答え: 辺の長さ1の正三角形を囲う正方形は、上図のように正三角形の1頂点を角にし、他の頂点までの角度が丁度15°になるようにした時に最小になります。何となくそういう形かなと想像した方は多いのではないでしょうか?ただ、これを証明しようとすると中々大変です。なぜこの長さになり、なぜこれが最小正方形なのかを解説します。  なお以下の証明は僕が導いた一例でちょっと泥臭い印象です。もっとスマートな方法があるような気がしています。思い付いた方は是非コメントで教えて下さ

          正三角形を囲う最小の正方形は?(解説)

          VBのデリゲートやラムダ式をC++のDLLに渡す時に色々注意があるお話

           関数の中で非同期処理を行い、その終了や結果を呼び出し元にお知らせしたい。そういう事って非常に良くあります。作っているアプリがVBやC#内だけで完結しているのであれば、デリゲートとかラムダ式を関数に渡せば、関数内で任意のタイミングでそれをコールバックできるので、呼び出し元は問題無くお知らせを受け取る事ができます。  しかし時にC++で作ったDLL内で非同期処理をして、その結果をVBやC#に返したいという事があります。それを実現するにはDLLにデリゲート(ラムダ式)を渡さなけ

          VBのデリゲートやラムダ式をC++のDLLに渡す時に色々注意があるお話

          2段ジャンプの最大高と最大幅跳び距離(問題)

           横スクロールアクションゲームなどでは「2段ジャンプ」が良く使われます。これは1回目でジャンプした後に空中でもう1度ジャンプできる能力です。これによって1回のジャンプでは届かない遠くのブロックの上に飛び乗ったり、崖から落ちながら横穴に飛び込んだりとアクションの幅が広がりゲームが面白くなります。  今回はそんな2段ジャンプからの問題。今横方向に1秒で2m走るキャラクタがいます。キャラクタがジャンプした時の滞空時間は2秒です。また1回目のジャンプの後空中にいるどのタイミングでも

          2段ジャンプの最大高と最大幅跳び距離(問題)

          2段ジャンプの最大高と最大幅跳び距離(解説)

          問題はこちら: 答え:高さは16m、幅跳びは8m  今回の2段ジャンプの仕様で、キャラクタは最大16mの高さまで到達でき、8mの距離を横跳びする事ができます。そして双方共に1回目のジャンプをした直後に2回目のジャンプをすると実現できます。なぜそういうタイミングなのかを含め解説します。 解説1:自由落下ジャンプの式 まず座標を整理しましょう。キャラクタの初期位置を(0,0)とし、横方向をX軸、上方向をY軸と定めます。キャラクタは1秒間に2m横移動できるので、横方向の速度Vx

          2段ジャンプの最大高と最大幅跳び距離(解説)

          道をスムーズに繋ごう(問題)

           今上図のように途切れた直線道路があり、間を繋ぐ工事をする事になりました。工事は左下の直線道の先端S(0,0)から始め、右上の道の先端G(6,4)まで滑らかに繋ぐ予定です。滑らかに繋ぐ方法は色々考えられますが、今回は接続道の経路の座標を以下の式で計算する事になりました: tはいわゆる媒介変数で、t=0の時が左下のスタート地点S、t=1の時が右上のゴール地点Gで、0≦t≦1で接続道のある位置を表せるとします。先端SはX軸方向(1,0)を向き、先端Gは(-1,1)の方向に進入す

          道をスムーズに繋ごう(問題)

          道をスムーズに繋ごう(解説)

          問題はこちら: 答え:以下の式 問題の道をスムーズに繋ぐ経路は上式で計算できます。式内の係数をどう計算するか解説します。 解説:スムーズは「微分」で 今回の接続道の経路は以下の式で計算するとしました: 問題の条件を満たす係数a~fを求めるのが目的です。  まず曲線はt=0の時にS(0,0)を通るのでt=0を代入してみます: 係数cとfがそれぞれゼロなのがわかりました。  t=1の時曲線はG(6,4)を通ります。同様にして、 aとbそしてdとeの関係が出てきました

          道をスムーズに繋ごう(解説)

          あまりに難し過ぎた伝説の図形問題(問題)

           ジュニア算数オリンピックは小学5年生までの小学生が挑戦できる算数の競技試験です。1992年から毎年開催されていて、世界中の小学生がチャレンジしています。出題される問題は、小学生の算数の範囲で解けるのですが、大人でも舌を巻くレベルの高難易度。その為試験を受けるのは算数が極めて得意な小学生が殆どのようです。  今回はそんな難問揃いの中から平成9年のジュニア算数オリンピックで出題された伝説の問題にチャレンジです。ずばり上の図のxの長さを求めて下さい。  この問題、参加した小学

          あまりに難し過ぎた伝説の図形問題(問題)

          あまりに難し過ぎた伝説の図形問題(解説)

          問題はこちら: 答え:5.5cm 図のxの長さは5.5cmになります。なぜそうなるかを以下で解説しますが、算数の範囲でこれをノーヒントで導くのは本当に難しいです。まずはその算数の範囲で解く方法を、その後に中学数学の範囲での解き方、高校数学の範囲での解き方をそれぞれ解説します。 算数の範囲で解く 図を見た時、使えそうな特徴が2つあるのがわかります。一つは底辺が2等分されている事、そして∠ADCが135°の有名角になっている事です。  底辺2等分は頂点から中点に線を引いて三

          あまりに難し過ぎた伝説の図形問題(解説)

          折り紙の中に面積1/2の正方形を作ろう(問題)

           今回はシンプルな折り紙の問題。  今1辺が1の正方形の折り紙があります。この折り紙を折って、その折り跡で面積1/2の正方形を作って下さい。ただし折り方のルールがあります。 定規等で長さを測るのはNG 辺と辺を合わせて折るのはOK 角と辺、角と角を合わせて折るのはOK 折り目が交差している所(辺と折り目も含む)は交点として利用できる。交点と角を合わせて折る、交点を通るように折り目を付けるのはOK。 以上です。要はちゃんと跡に残った目印となる物に沿って折るのはOKと

          折り紙の中に面積1/2の正方形を作ろう(問題)

          折り紙の中に面積1/2の正方形を作ろう(解説)

          問題はこちら: 答え:解説の手順で折る 一辺が1の正方形の中に面積1/2の正方形を折り目で作る事はできます。おそらく複数の解答があると思いますが、ここでは僕が思い付いた方法を解説します。 解説1:一辺が√2/2の正方形を目指す 面積が1/2の正方形という事は、一辺の長さLは、 です。この長さを見つければ答えにぐっと近付きます。幾何学で√2は割と簡単に作れます。そう、直角二等辺三角形の辺の比が1:1:√2でしたよね。これがポイントになりそうです。 解説2:十字に追って斜

          折り紙の中に面積1/2の正方形を作ろう(解説)