その他

違う3Dモデルをたくさん読んでも平気だったが、同じ3Dモデルを大量に読み込もうとすると、アクセス違反になった。
このエントリーをはてなブックマークに追加

ヒープ領域が足りなくてずっと例外ばっかり出てたのですが、
Visual Studio のリンカー→システム→ヒープサイズの設定, スタックサイズの設定にそれぞれ10485760(10MB)と書いたらなんか直ったっぽいです。

丸一日似たような作業をしていたのに直らなかったので、すごく困惑していますが、とりあえずこれでよしとします。

一画面に10MBを超える3Dモデルは配置できないということなので、画面外のモデルは破棄する必要がありますね。
このエントリーをはてなブックマークに追加

プロジェクトのDebugフォルダとリリースフォルダを削除する。

その後、.slnファイルや.vcxprojファイルなどを正しいファイル名に直す。
この時、ソリューション'プロジェクト名'を使う
このエントリーをはてなブックマークに追加

GSD


また2次創作です。すみません。

このゲーム自体は2013年に開発を開始して、2015年に完成させたものです。
ボクの処女作でして、ボクのエッセンスが色々詰まってます。今遊んでもそこそこ面白いです。

で、結局RPGツクールって完成させられるのかという話ですが、ボクは完成まで27ヶ月掛かりました。
いやきついですマジで、正直2013年にタイムスリップできるなら、ボクはボクに「辞めておけ」と言うでしょう。

なにがきついかって、自己肯定感が凄く低いんです。RPGツクールという名前がよくないんです。Unityでゲーム作ってるって言うとなんかおしゃれですが、RPGツクールにはそんなものはないです。名前が絶望的にダサいんですから。

「RPGツクールでゲーム作ってます」って人前で言える人はそうそういないと思います。そんな感じで自分の自尊心が低くなるので、リアルがどんどん腐っていきます。

なんかネガティブなことばかり書いていますが、こういうことは完成までずっと考えていたので、
しょうがないです。RPGツクールには感謝と恨みがたっくさんあります。
前回のデジタルTCG作ったので開発手順とか考えてたことをまとめてみたからも垣間見えるように、ゲーム開発はどろ臭いです。

なんで27ヶ月も掛かるかというと、これはRPGツクールだけでなく他のツールを使ってもそうなります。開発初心者って、自分を客観視できないんですよね。主観でしか評価できず、故にテストプレイに飽きて削除を繰り返します。

これは単純に、初見のテストプレイ時の自分の感想を書き留めておくことで回避できます。プレイヤーは初見なんですから。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

RPGツクールなので技術的な話とかはぶっちゃけないです。スクリプト素材とかイラスト素材とかをふんだんに使っているので、自分の存在意義を問うことになります。
自分って何者なんだろうと自問自答をずっと繰り返しながら制作するので、また飽きて削除とかしてしまうのです。まあ、一本完成させれば自分が何者なのかは分かりますけどね。

答えは……デザイナーです。そう、ゲームデザイナー。リソースを組み合わせてより良いものを作る人。料理人とかMAD動画作成者が近いですかね。

実は実制作期間は5ヶ月です。前半の22ヶ月はRPGツクールの操作に慣れたり、作っては消したりを繰り返してました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
まとめ
正直RPGツクールだろうがプログラミングだろうがほっとんど何も変わらないから、さっさと完成させてプログラミング勉強して欲しい。RPGツクールでゲーム完成させた後にC言語を勉強しても命令の記述がなにもかも同じでびっくりするでしょう。そして、C++とオブジェクト指向を学んで、これはイベントを作成する機能だと直感で理解できれば最強です。その導入の為のツールとしてはRPGツクールは最高ですね。
このエントリーをはてなブックマークに追加

DMS


開発環境:Win7 & 8.1 + Visual Studio 2015, 17, Eclipse CDT
使用言語:C/C++ + DXライブラリ + WinSock1, 2 + BSDSocket


はい、2次創作です。すみません。
あと、このゲームは今からちょうど1年半前に開発を開始して、そこから5ヶ月で完成まで持って行った作品です。なぜ今になって掘り出して書いているかと言いますと、完成させてから1年が経過して、自分の中で整理できたからです。

システム的にはShadowverseとかHearthstoneとかWAR OF BRAINSとかと同じだと思います。オンライン対戦ゲームはボクの能力の限界を超えていたようで、今見ると酷いコードがたっくさんあります。

まず、オンライン部分の開発は後回しにしました。オフラインで動く部分を全部作りきってから、TCP/IPの勉強を開始した程です。具体的にはデッキを作成/編集して、テキストファイルへ保存する部分です。これは単純に各カードに一意のIDを与え、識別し、エディタ(ゲーム内の)からドラッグアンドドロップでデッキリストへ追加するというものです。
no title


で、保存ボタンが押された時にテキストファイルへそのIDを出力します。
ゲームを起動するとそのテキストファイルからIDを読み込んでデッキリストを生成するのです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

オンライン部分なんですけど、当初は自宅にサーバーとしてデスクトップを立てて、クライアントのアクセスをそこで受け止め、IPアドレスを交換しあってました。
……のですが、火事が怖いのですぐレンタルVPSへ切り替えました。
さくらVPSを借りて、そこでIPアドレスを交換するマッチングサーバー(プログラム)を動かしていたのですが、HTTPで通信するように書けばさくらサーバーでも運用できたのかもしれません。詳しくは知りませんけど。

マッチングはUDPで行い、IPアドレスを交換した後はTCPで通信していました。ですが、マッチングもTCPでやるべきだったと反省しています。UDPでやる意味がないです。
あと、クライアントプログラムが今見ると本当に酷いです。
WSAWaitForMultipleEventsとWSAEnumNetworkEventsを両立していると言えばその酷さが分かるでしょう。エラー処理もぐちゃぐちゃだし、connectのブロッキングは回避していないしで、書き直す気力も起こりません。
最近WinSockの勉強をやり直してやっとこさきれいなプログラムが書けるようになりました。
絶対に挫折させないWinSock

でもTCPはレコード境界を作らないので、その辺りの処理をプログラマが実装しなきゃいけないのがなんとも面倒くさいというか、レコード境界付きTCPを誰か作ってください。20年待ちます。

あ、あと、WinSockもBSDSocketも中身はほとんど同じなので、参考書の中身が大分被ります。違う部分の方が少ないので学習は楽です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
カードの効果は……
とりあえずボクは毎フレーム毎にバトルゾーンのカードが効果を発揮していないか確認していましたが、今思えば無駄だったと思います。プレイヤーがアクションを起こした後に1度だけ確認すればよいですね。

カードの情報を保持するクラスを作成して、他のクラスのメンバとして使用していました。例えばデッキクラスから生成されるデッキオブジェクトの実態はカードオブジェクトの配列です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
グラフィカルじゃないよね……?
はい。DXライブラリを使うのはこれが初めてで……というかそもそも画像の表示とSEの再生にしか使ってないです。

なので演出の凝り方とかよくわかんないです。
でもアニメーションの再生は分かりました。フレームを確保する関数を書いて、その関数へ渡したフレームの間は他の関数の処理を止めればよいのです。
これを利用して呪文を発動した時だけはちょっとだけかっこよく表示されるようにしています。
(51秒目から)


というか当時は数学もIとIIをやった位で、その上なにもかも忘れていたので、画像の斜め移動とかはやっつけで書きました。sinとかcosとかにラジアンすら渡してません。適当に数値を代入して、1時間位掛けて目当ての方角へ移動する値を見つけてはそれを保存しておくという、他のプログラマが見たらドン引きするような手法をしていました。

だってこの為だけに数学やりたくなかったんですもん。時間もありませんでしたし。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
まとめ

すごく楽しかったけど大変でした。
もうオンラインゲームは作りたくないです。考えることがたくさんありますから。
でもまた作りたくなってるんですよね。もし次作るとしたらオリジナルのカードゲームにしようと思います。やっぱり2次創作は精神的に辛いです。
このエントリーをはてなブックマークに追加

↑このページのトップヘ