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

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

記事外へのリンク

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

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

 □ 公式の逆引きリファレンスが公開されました!
    https://akashic-games.github.io/reverse-reference/v3/
    自分が開発したての頃にあったらいいなと思っていました。
    この記事とは書き方が違う所も多いですが、期待です。


ここから本編。

 

ニコ生ゲームを作ろうと思ったらすぐ作ろう その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

 

ニコ生ゲームを作ろうと思ったらやっぱりマルチ! その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