ニコ生ゲームを作ろうと思ったときの目次

この記事はニコ生ゲーム開発について作成した一連の記事をまとめたリンク集です。
どこに何があるかわからなくなるので、リンクと各記事の目次を並べていきます。

記事外へのリンク

唐突ですが、先にこの記事とは関係ない情報のリンクを掲載しておきます。

 □ 公式の基本的な情報はこちら。
    https://akashic-games.github.io/tutorial/v3/
    https://akashic-games.github.io/shin-ichiba/
    https://akashic-games.github.io/reverse-reference/v3/

 □ ニコ生ゲーム関係のリンク集を記事にしました。
    https://nicorakku.hatenablog.com/entry/2022/06/16/064706


ここから本編。

 

ニコ生ゲームを作ろうと思ったらすぐ作ろう その1

開発準備 & サンプルゲーム起動

【開発準備】

【サンプルゲーム起動】

  • 保存場所
  • ダウンロード akashic init
  • 起動テスト akashic-sandbox


ニコ生ゲームを作ろうと思ったらすぐ作ろう その2

サンプルコードの数値を変更する

【改造の準備】

【改造内容】

  • キャラクターの動きを変える (数字を書き換える)
  • 残弾数を決める (数値を記録する)
  • 残弾ゼロで打てなくする (条件をつける)

 


ニコ生ゲームを作ろうと思ったらすぐ作ろう その3

サンプルコードに表示を追加する

【改造内容】

  • 残弾表示を作る (画像を追加する)
  • 残弾表示を更新する (常に処理する)
  • 残弾を補充する (条件の例外について)
  • タイルを作る (四角を追加する)new g.FilledRect
  • タイルを並べる (四角を並べる)

 


ニコ生ゲームを作ろうと思ったらすぐ作ろう その4

サンプルコードにゲーム要素を追加する

【改造内容】

  • 各行ごとの積み数を作る (配列を作ってみる)
  • 積み数に応じてタイルを増やす (配列を参照する)
  • 射撃に応じて積み数を操作する
  • 積み数の一致をチェックする (配列を操作する)
  • 積み数をリセットしてランダムに積む g.game.random.get()
  • 積み数を得点に反映させる
  • 積み数の超過をチェックする


ニコ生ゲームを作ろうと思ったらすぐ作ろう その5

サンプルコードの見た目を変えて別のゲームにする

【改造内容】

  • 画像を用意する
  • 画像を差し替える akashic scan asset
  • 画像を追加する
  • チュートリアルと終了の画像を表示する
  • 制限時間を設定する param.sessionParameter.totalTimeLimit


ニコ生ゲームを作ろうと思ったらすぐ作ろう その6

ニコ生ゲームとしてリリースする

【改造内容】

  • フォントを追加する new g.BitmapFont
  • 音を用意する scene.assets[].play();
  • 音を追加する

【ゲーム公開】

  • zipにする akashic export html
  • アイコンを用意する
  • アツマールにアップロードする
  • 生放送に登録する

 

ニコ生ゲームを作ろうと思ったらすぐコピペしよう その1

クリックして得点を集めるゲームを作る

  • コメント表記
  • 画像入れ替え
  • ランダム出題 g.game.random.generate()
  • レイヤー生成
  • フォント作成
  • 時間管理 scene.setTimeout(function() {})
  • 背景
  • ランダム配置
  • var から let へ
  • マルチタップ対策(同時押し排除)
  • ステージ進行
  • 画面内で反射する画像
  • 重なったときのクリック判定 touchable
  • 定期的な得点ボーナス g.game.age  g.game.fps
  • 画像重ねの表示順整理 children.sort
  • ランキング登録 window.RPGAtsumaru.experimental.scoreboards.setRecord
  • ランキングボタンとリスタートボタン g.game.replaceScene()


ニコ生ゲームを作ろうと思ったらすぐコピペしよう その2

キャラクターが移動するゲームを作る

  • タッチ操作 touch.onPointDown.add touch.onPointMove.add touch.onPointUp.add
  • フレームアニメーション g.FrameSprite
  • プレイヤーと敵キャラの状態
  • プレイヤーの見た目変化
  • ヒット判定


ニコ生ゲームを作ろうと思ったらすぐコピペしよう その3

タイミングよくクリックするゲームを作る

  • 音量の調整 scene.assets[ ].play().changeVolume()
  • FPSの変更
  • 状態の切り替わり
  • タイミングの計測
  • 背景を動かす移動表現
  • バーの表示 アンカーの指定 anchorY
  • 画像の切り抜き g.Pane
  • リスタート時のウォームアップ時間


ニコ生ゲームを作ろうと思ったらすぐコピペしよう その4

4択クイズゲームを作る

  • 共通ランダム化 param.random
  • ダイナミックフォント g.DynamicFont
  • 縁取りビットマップフォント作成


ニコ生ゲームを作ろうと思ったらすぐコピペしよう その5

間違い探しゲームを作る

  • レイヤーの切り替えで出題する g.E


ニコ生ゲームを作ろうと思ったらすぐコピペしよう その6

シンプルな動きのゲーム集

  • 改造準備のおさらい
  • 画像ファイルの変更(おさらい)
  • 音声ファイルの変更(おさらい)
  • 制限時間の変更(おさらい)
  • ゲームの公開(おさらい)


ニコ生ゲームを作ろうと思ったらすぐコピペしよう その7

音ゲー

 

 

ニコ生ゲームを作ろうと思ったらやっぱりマルチ! その1

育成ゲームまたは育成ツールを作る

  • マルチゲーム作成に必要なこと supportedModes
  • マルチゲームの動作確認 akashic serve -s nicolive
  • ローカルとグローバル
  • ローカルエンティティとローカルイベント local
  • ローカル処理の注意事項
  • 操作の全体への共有 raiseEventscene.message
  • 放送者だけ特別な操作を可能にする g.game.onJoin
  • スキップ中の処理 g.game.isSkipping
  • もっとシンプルにグローバルだけで処理する

 

ニコ生ゲームを作ろうと思ったらやっぱりマルチ! その2

全員のキャラクターがスコアを競うゲームを作る

  • 拡張機能の利用
  • 名前取得の拡張機能
  • 放送者専用のボタンを用意する
  • 監視処理を中止する
  • 参加方式のバリエーション
  • いつでも参加できるようにする
  • 参加者ごとのキャラクターの作成する
  • キャラクターにパーツを追加する
  • キャラクターに名前をつける
  • 参加者のリストを作る
  • アイテムとの接触
  • キャラクター同士の接触
  • リスタート処理
  • グローバルとローカルの確認
  • 状態遷移時のraiseEventの確認


ニコ生ゲームを作ろうと思ったらやっぱりマルチ! その3

  • ジャンプ
  • 当たり判定 g.Collision
  • レーザーの当たり判定と表示
  • 分割画像の外周映り込み
  • 効果音の重複再生防止
  • 生ゲームプレイ中ページへの掲出 multi_admission
  • 開発者ツールによるエラー箇所の特定
  • アツマールマルチ対応 envinronment atsumaru 

 

ニコ生ゲームを作ろうと思ったらやっぱりマルチ! その4

  • 前々回の訂正 resolvePlayerInfo
  • 匿名希望かどうかを参照する info.userData.accepted
  • 非表示にする hide()
  • カメラで表示する場所を変える camera
  • 観戦するプレイヤーを切り替える
  • 画面外を非表示にする
  • ゲーム展開がズレるエラーについて

 

ニコ生ゲームを作ろうと思ったら物理的に考える その1

  • 物理演算のメリット
  • akashic-box2dの情報
  • akashic-box2dのインストール
  • akashic-box2dの利用方法
  • 世界を創造する  b2.Box2D box2d.step
  • 物体を出す box2d.createBody
  • 物体の位置を指定する body.b2Body.SetPosition
  • 固定された箱を作る
  • 自由に動く物体を出す b2.BodyType.Dynamic
  • 物体の情報を取る .entity .b2Body
  • 物体を消去する box2d.removeBody
  • 世界をリセットする
  • 時を止める
  • 立体的な文字
  • 直感的な色指定方法

 

 

ニコ生ゲームを作ろうと思ったら物理的に考える その2

  • 重力の設定 gravity
  • 物体の操作 速度指定 b2Body.SetLinearVelocity
  • スリープ状態 b2Body.SetAwake(true)
  • フリック操作の速度
  • 速度の減衰 damping  linearDamping angularDamping
  • 反発係数 restitution
  • 物体生成位置の重なり
  • 物体のリストアップ box2d.bodies
  • 親エンティティの乗り換え

 

 

ニコ生ゲームを作ろうと思ったら物理的に考える その3

  • 円を作る box2d.createCircleShape()
  • 多角形を作る box2d.createPolygonShape()
  • 画像を物体に貼る
  • 正多角形を作る
  • 静止を待つ b2Body.IsAwake()
  • 物理演算の予測
  • 接触イベント b2.Box2DWeb.Dynamics.b2ContactListener box2d.isContact
  • 複数の物体との接触イベント
  • 接触
  • 絵文字

 

 

ニコ生ゲームを作ろうと思ったら物理的に考える その4

  • 物体を運動させる b2.BodyType.Kinematic
  • 衝突の有無を場合分けする filter
  • 衝突の場合分けを変更する  body.b2Body.CreateFixture()
  • 衝突処理の重さ

 

 

ニコ生ゲームを作ろうと思ったら物理的に考える その5

  • 物体に力を加える
  • 物体に衝撃を加える
  • 接触イベントで物体の情報を利用する .GetFixtureA().GetBody()
  • b2BodyからEbodyとentityを特定する .getEBodyFromb2Body()
  • 接触した物体を操作する
  • 物体をつかんで操作する
  • ジョイントの種類
  • マウスジョイントを作る
  • ローカル座標のグローバル座標を取得する localToGlobal
  • マウスジョイントの目的地を変える
  • マウスジョイントを解除する
  • 物体の角度を固定する body.b2Body.SetFixedRotation(true)
  • 物体をすり抜けさせない bullet

 

ニコ生ゲームを作ろうと思ったら物理的に考える その6 

  • 回転ジョイントの基本 .Joints.b2RevoluteJointDef()
  • 背景にピン止めする
  • ジョイントを回転させる
  • 回転の可動範囲を設定する
  • 特定の角度に制御する
  • 複数の関節を組み合わせる
  • SetFixedRotationとの組み合わせ
  • ピストンジョイントの基本 .Joints.b2PrismaticJointDef()
  • ピストンを動かす
  • ピストンの可動範囲を設定する
  • ピストンの現在位置を読み取る
  • バネの動きをさせる
  • ウェルドジョイントの基本 .Joints.b2WeldJointDef()

 

 

 


 

記事アイコン用画像