40歳のおっさんがゲームを作り始めてみる [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
プログラミングの勉強もしたことがないのでとりあえず本を買ってみました。 いやいや、まだ肝心の戦闘シーンとかには手をつけられていません。
あと今ちょっと困っているのはアイテムデータの管理方法です。
今回アイテムには、薬草などの消耗品、剣や盾などの装備品とがあるのですが、今からアイテムIDを割り振るのにどうしようかと。
通し番号で全て管理すると、何番が何のアイテムなのかわからなくなるので、Item001とSword001という風に分けた方がいいのか。
消耗アイテムが数十種類、装備品が200種類近くあるので、簡単で明確に管理したいなと。 そっか、idは逆に文字列じゃなくて通し番号の方がデータとして呼びやすいのかな。画像データの管理についてはitem001とか自分がわかりやすくしておけば良いだけで。RPGのアイテム管理って皆さんどうしてるんですかね。 アイテム種類ごとのデータ構造(薬草の回復量情報や剣盾の攻撃力防御力情報)はどうなってるんだろ
簡単にデータ構造を一般化してるのかな
それによるんじゃない 一般論としては、配列にして、添字を定数とかかな
#define SWORD 0
#define KONBOU 1
item[SWORD][KONBOU] 前に誰かに教えてもらった
enum Item{
SWORD,
KONBOU,
ONO,
YAKUSOU
};
Dictionary<Item, int> itemDictionary = new Dictionary<Item, int>();
使う時は
//薬草を2個ゲット
itemDictionary[Item.YAKUSOU] = 2; アイテムの属性の数は、多い。
30ぐらいある
各、光闇火水風土への耐性が何% とか、
毒・睡眠・石化など、異常状態への耐性とか 個人開発ゲーで装備品が200ってヤバくね。超大作の気配 おやじ二等兵です。
ゲーム製作が佳境に入ってきて、クラスや関数が増えてプログラムも複雑化してくると、だましだましやってきたことのツケがまわってきました。
変数・関数・引き値・戻り値の整理が未だにできていないので頭の中がこんがらがってます。
歳のせいかもですが英語の勉強と一緒で、一日空けると一歩後退してしまうようです。
アイテムは200種類、登場モンスターも200体以上いるので、ステータスの割り振りで年末年始の作業のほとんどを使ってしまったんですが、その間プログラムをあまり触らなかったのがいけなかったです。
平成のうちにリリースしたいと思っていますが、開発のペースを上げないと厳しいかもです。 >>471
ゲーム内容はダンジョンの中で戦い続けるだけなんですけど、敵のバリエーションが豊富じゃないと飽きてしまうと思いまして。
そして全キャラをドットで描き下ろしてくださったイラストレーターさんにも感謝です。 せっかく、>>463の回答がいくつか書かれているんだから、ありがとうくらい言ったら?
(「回答が遅かったためすでに自分のやり方で実装してしまいましたが」でもいいし
実際、どう実装したからも言うべきだとは思うが) おやじ二等兵です。
すみません、疑問に対して皆さんからいくつか回答を頂いていたのに返答をしておりませんでした。まずはありがとうございます。そしてお返事が遅れて申し訳ありません。
頂いた回答について、理解できていないところが多々あったのでお返事の前にある程度理解してお返事しようとして、色々調べている間にドツボにハマっておりました。プログラムの基本部分をもう一度見直してみます。
一週間程度ご報告はできないかもしれませんが、ゲーム製作は進めていきたいと思います。 >>474
別にここは質問スレでもないし回答は勝手に書いてるのだから気にせずに、おやじ二等兵のペースで大丈夫だぁ >>475
普通に善意で書いているのだから、お礼くらい言うのが常識だと思うけどね
「ただでサービスするのが当たり前」みたいな考え方が世の中をおかしくしているのだと思うし
脇から急に出てきたあなたが仕切っているなら別だけどさ なんかスレのノリが15年くらい前の専門板みたいだなぁ
>>1のことではなく取り巻きの連中から加齢臭がする >普通に善意で書いているのだから
本当にそう言い切れるかな
回答者の実態がどうかとは別の問題として、自分が疎い分野なら尚更、疑って掛かる必要がある。時間がかかっても仕方がない
当人もたぶん調べてるんだろうな、と思ってた
また真っ当に成果出している社会人に対して、頭ごなしに素っ気無く杓子定規を強要するのもどうかと思うけどね
そもそもここは、ただでさえ成人スキル・対人感覚・道徳観が常軌を逸して未熟なゴミカスナマポが目立っている板であることも忘れて欲しくない
ここでは会話がまともにつながる人材は非常に貴重じゃないか(笑) お礼を強要する善意とかね
モンスタークレーマーみたいやね お礼くらい言うのが人の道だろうと思うんだけどね
押しつけではなくて、質問があったから、回答しました、なんだからさ
(あなた自身が回答しているなら、カッコ良いと思うけどさ、「礼はいらねえぜ」的に)
逆に、あなた自身は主体的にボランティア活動したことあるの?という話になるわけだが
海外でも大企業がOSSの美味しいところだけ持っていくのが問題になっているが、
「美味しいところだけ掠め取る、ただしクレームは言う」みたいな考え方が主流になると、
ほとんど誰もフリーで作る人がいなくなると思うけど(今の日本の現状のように)
私個人としても、おやじ二等兵さんには自分のソフト開発の励みにもなるし、
「ゲームを作る」という意味では同士な訳だから、稚拙ながら多少は答えられるところは答えたりもしているけど 「質問に答えてあげたんだからお礼くらい言いなさいよね!」
っていう古典的ツンデレヒロインの面影がみえたわ まぁ、その辺は双方がどう思うかなだけだし強要は良くないでしょ
少なくとも真面目に頑張ってるのは伝わるし目くじら立てんでもって思う おやじ二等兵です。
今日はモンスターをランダムに表示する処理を入れるために配列について学びました。
ダンジョンを進むと一定の確率でモンスターが現れる。という処理まで作っていましたが、今日はモンスターリストからランダムに抽出してあるモンスターを登場させるところまで実装しました。
勘違いしていたのはRamdom.Rangeを使えば、モンスターリストからランダムに抽出して、データを持ってきてもらえると勝手に思い込んでましたが、Ramdom.Rangeはあくまで一定数の中から無作為抽出するだけで、モンスターリストから探してくることまではしてくれないんですね。
for文を使ってリストの先頭から一つずつチェックしていき、if文でランダムに抽出したモンスターIDと合致すれば、そこでやっとモンスターのデータを取得することができる。
抽出、検索、取得の命令を一つづつ組まなければならないということを勉強しました。
先日みなさんから教えていただいた配列の使い方とはちょっと違いますが、これを応用して宝箱からアイテムをランダムにゲットするプログラムを組んでみます。 あ、そっか。これがプログラミング的思考ってやつなんですね、きっと。 モンスター固有IDをランダムで選ぶより、リストのインデックスをランダムに選べば、モンスターIDを突き合わせるなんてことはしなくてよくないですか? もう一度読み返してみました。
あらかじめランダムに選ばれうるモンスター群がいるんですね。それが「リスト」なのかな。
で、そのリストの何番めかをランダムで選べばいいだけのような。
モンスターのデータをもつマスタのインデックスを、選ばれうるモンスター群に持たせてあげれば、1リストインデックスから2モンスターマスタのインデックスにつながりデータもすぐ取得できるように思えます。
モンスターマスタ[リスト[1リストインデックス].2モンスターマスタインデックス].モンスターのデータ
↑こんなイメージなんですが。
見当違いだったらごめんなさい。 >>488
ありがとうございます。いまどのようにモンスターを読み込んでいるか、勉強を兼ねて後ほどまとめて説明したいと思います。 おやじ二等兵です。以下が私が作っている、モンスターをランダムに呼び出すプログラムです。
まずモンスターのID、名前、HPなどの各種ステータスをExcelで作成したMonsterDataというファイルを作りました。
そしてアセットのXLS_Import Settingsを使って自動生成されたのが、Entity_MonsterData.csです。
さらに、エクセルで作成したデータを読み込むためのクラス、EnemyStatus.csを作りました。 public class EnemyStatus : MonoBehaviour {
public List<MonsterData> listMonster = new List<MonsterData>();
//Excel設定ファイル(Resourcesフォルダ以下)
private string data_file = "Data/MonsterData";
//エクセルデータ管理クラス
private Entity_MonsterData monsterData;
void GetExcelData(){
monsterData = Resources.Load(data_file) as Entity_MonsterData;
if (monsterData == null) {
Debug.Log("Excel Data Read Error!");
return;
}
}
// Use this for initialization
void Awake () {
//エクセルのデータをUnityに読み込む命令
GetExcelData();
for(int i=0;i<monsterData.sheets[0].list.Count;i++){
listMonster.Add(new MonsterData{
Monsterid = monsterData.sheets[0].list[i].MonsterID,
Name = monsterData.sheets[0].list[i].MonsterName,
Imagename = monsterData.sheets[0].list[i].MonsterImage,
});
}
} そしてEnemyLoadというスクリプトでモンスターの情報を取得するクラスを作成しました。
public class EnemyLoad : MonoBehaviour {
public EnemyStatus _EnemyStatus;
public MonsterData _Monster;
public GameObject Monster;
private string imagePath = "Images/Monster/";
public void ShowEnemy(int Floor){
_Monster = new MonsterData();
//100以上111未満のidをランダムに決める
int id = UnityEngine.Random.Range(101,111);
//モンスターリストの先頭から頭までを検索
for(int i=0;i<_EnemyStatus.listMonster.Count;i++){
//ランダムに決めたモンスターidと一致した場合
if(id == int.Parse(_EnemyStatus.listMonster[i].Monsterid)){
//そのモンスターの情報を取得する。
_Monster = _EnemyStatus.listMonster[i];
}
}
Monster.GetComponent<Image>().sprite = Resources.Load<Sprite>(imagePath + _Monster.Imagename);
Debug.Log(id+","+_Monster.Imagename);
} ちなみにモンスターのID管理については3桁の数字にしています。
1面で登場するモンスターは100番台とし、1面の敵は10種類いるので101以上、111未満のidからランダムに読み込むとしています。 こうやってまとめてみると、えらい複雑な仕組みにしている気がする・・・ pcで書き込んだのでsageになってなかった、、(>_<)
今回は教えてもらいながら作っているので、勉強を兼ねてちょっと複雑に作っている部分もあるかもしれません。 うまくいってるなら直す必要ないけど
Range(0,10)にすれば検索しなくても
listMonster[i].Monsteridでidは得られるんでないの? おやじ二等兵です。
>>497
ありがとうございます。
for文とかif文とか使わなくてもいけるんじゃないかってことでしょうか? もしかしてlistmonsterには全モンスターが入ってるのかな
それなら検索必要だな range(91+ stage数×10, 101+ stage数×10)
でいかんの? おやじ二等兵です。
>>500
ありがとうございます。そうです。全モンスターがそこに入っています。
>>501
アドバイスありがとうございます。ちなみに91という数字はどちらからきたのでしょうか? >>502
計算して逆算です。
ステージ1なら101から110までとあったので。 >>503
なるほど1面ならrange(101,111)、2面ならrange(111,121)となるわけですね。
ただ、面によっては登場するモンスターの数が変わってくるので、一律にはできないんですよね(>_<) >>505
ですよね(^_^;)
ということで、ちょっとややこしいですけど今のやり方に至っているんだと思います。
特に大きな問題はなさそうですし、宝箱開けた時のアイテム取得もこれと同じ方法でやろうかと思います。 自分ならモンスターIDの左から2文字を取り出して
1階なら 01で 01が含まれるモンスターの数を調べる
これで乱数の振り幅が決まる
r= range(0,N)
01+r で文字列にすればモンスターIDが決まる >>507
ありがとうございます。これなら階数を引数で指定しなくてもモンスターを呼び出せますね。 おやじ二等兵です。
>>509
あれ?私の認識が違いましたかね。
階層ごとに登場するモンスターの数が違うので、現状では階層ごとのモンスターデータ取得の数値を入れてあげないといけないけど、このやり方ならモンスターのidから登場階層を判断できるので、いちいち数値を入れて支持しなくてもいいのかなと。
今日から戦闘画面の本格的な製作に着手しました。来週あたりには予約トップ10で予約受付を始めようかと思っています。 おやじ二等兵です。
ティザー広告が一足先に完成しました!
https://youtu.be/1t82HtdXuCY
ゲームの雰囲気がなんとなく伝わればいいなぁ。 今回グラフィックはドット絵クリエイターの方に外注しました。
11月から本格的に作り始めたので、今だいたい5ヶ月目くらいですかね。 外注でしたか。半年ほどと。凄いですね。
引き続き頑張ってください。 >>517
ありがとうございます。今回モンスターのグラフィックだけで200体近くいますので、1人では無理でしたね。
とはいえ、まだ完成していないので頑張ります! 最近はコードを書くことも少し楽しくなってきました。とはいえ、まだまだ教えを請わないと進められない状態ですが。
予約トップ10での予約状況もそこそこ良かったので、近々米国のApplestoreに事前登録しようかと思っています。 うーん、コルーチンの使い方がわかるような分からないような・・・。
コルーチンはプログラムの処理をちょっとストップしてまた再開、みたいなことができる一旦停止機能の関数という捉え方でいいのだろうか。
StartCoroutine("コルーチン名")
で使える。というのはわかったんだけど、具体的にどうやって組み込んでいくかイマイチわからない(>_<) >>523
うおお、すごくわかりやすいです。ありがとうございます! 二等兵さんに触発され1月からぼちぼち勉強しながら作り始めたけれどuGUIあたりで足踏み中。
ま、どこかに公開するとかじゃないのでゆっくり勉強しよう。 おやじ二等兵です。
>>526
おお、ゲーム作りの一歩を踏み出したんですね!お互い頑張りましょう。
今週はステージ毎のモンスターの割り振りと、戦闘に使うカードの制御を実装していきました。来週である程度カードバトルが実装できればいいなと思っています。 >>527
https://imgur.com/a/Yw2I1TU
不思議のダンジョンっぽいの。
ダンジョン自動生成したあたりで知識が尽きたw
リビングで作業してるんだけれど、
ググって色々と調べて出てきたサイトを表示したら萌え絵が出てきたらじっくり読めないのがつらい。 >>529
学費ってどれくらいかかるんですかね?
いま自分は時給1500円でプログラマーさんから毎週2回教えていただいてます。
学校通った方が刺激もあって身につきやすいんでしょうけど。 おやじ二等兵です。
やっとリリースが見えてきました。
教えてもらいながら作っていたためプログラムの進捗が滞っており、4月のリリースを諦めて3ヶ月くらい先延ばしにすることも考えましたが、やっぱり4月にリリースしたかったので、プログラムについては半分外注に出して手分けして製作を進めています。
Githubの便利なこと便利なこと。
ちょっとお金はかかってしまいますが、その分は早くリリースして売り上げで取り返せばいいので、今は毎日データの修正&テストプレイを繰り返しています。 親父二等兵です。
リリース日が4月26日に決まりました!
なんとか平成にうちに間に合いそうです。 ひと段落お疲れ様でした。
私は、令和になりそうですw Android版のテストが始まりました。よかったら遊んでみてください。バランスが全然取れていないので死にゲーになってますが。
https://play.google.com/apps/testing/com.toihaus.darkblood 英語にしてsteamに出せばそこそこ人気でそうだと思った
外人こういうの好きだろ >>540
同年代としては面白いと感じました!
ボリュームを考えると中断かセーブ機能が欲しいです >>541
ありがとうございます。セーブ機能まわりはリリースまでに強化していきます! おやじ二等兵です。
リリースまであと2週間。ここからの最終調整がゲームの出来を左右すると言っても過言ではないです。バランス調整を頑張ります。‪
iOS版、Android版ともにすでに先行予約しています。
‪#ダークブラッド‬
‪iOS版‬
‪ https://itunes.apple.com/jp/app/%E3%83%80%E3%83%BC%E3%82%AF%E3%83%96%E3%83%A9%E3%83%83%E3%83%89/id1456346307?mt=8&#8236;
‪Android版‬
‪https://play.google.com/store/apps/details?id=com.toihaus.darkblood&#8236; おやじ二等兵です。
95%ほど完成しました。
バグは一通り直したつもりですが、あとは微妙なバランス調整などが残っています。
なんとか平成のうちにリリースできそうです。 ここの板で既に死んでるスレを再利用してゲーム作ってるんですが僕以外居なくて泣きそうです
そこでクエスチョンです
どうしたらこのスレみたいに励ましと罵倒が飛び交う様に出来るでしょうか >>546
こんばんは。親父二等兵です。
ゲーム制作板の皆さんはこちらの質問を真摯に受け止めて答えてくれる方が多いので、質問とかをされたらどうでしょう。
私も最近は専ら開発状況をつぶやくばかりですが、後から見返して、この時はこんなこと考えてたんだなーとか思い返しています。 おやじ生きてたのかw
完成させてるみたいだし5chにしては珍しいパターンだな >>547
こんばんは、親父殿
ここ数日ここを覗いて凄いな〜と感銘を受けております
しかし!!
私のスレは数年前に誰かが立てた勢い0.0なので人が居ない…
新たに立てるのも人様のスレに居候するのも申し訳ない
のです >>548
おやじ二等兵なんとか生存しております( ̄^ ̄)ゞ
作り始めてみる、というスタンスで始めましたが、何本か作れたので、今度はもう一歩先に進んで「ゲームで食べていきたい」を目指そうかなと思います。
>>549
そうなんですね、とりあえず今作っているものを公開されたらどうでしょうか?たまたま板に訪れた方が意見を下さってそこから盛り上がるかもしれませんし。 >>550
親父殿の目標上方修正素晴らしいです
令和まであとわずかですが最終調整頑張って下さい
たまたま板に…来てくれる事を祈って日記をつけます!
あざっした!! >>551
頑張ってください。私ももがきます。
板の名前もよかったら残しておいてください。だれか訪問するかも。 実はそのお言葉を待っていたり…w
タワーディフェンスを作るスレ
http://mevius.5ch.net/test/read.cgi/gamedev/1384150732/
こちらです
親父殿も今のリリースとか色々終わって一息ついたら是非アドバイスお願いしますっ
軍曹様方もお待ちしております >>553
板覗いてきました。先週から引き継いで始められたんですね。だったらまだ訪問者が少ないのも仕方ないのかも。特に制作序盤でアドバイスもしにくいでしょうから。何を題材にしたタワーディフェンスなのか、ゲームコンセプトなどを載せた方がいいかもしれませんね。 おやじ二等兵です。
今日から最終テストに入ります。大きな問題がなければ来週水曜日にテスト終了、26日正式リリースとなります。
今回のダークブラッドは今までで一番時間がかかりましたが、妥協せずに作ったので自信作です。
てか、これで売れなかったら、もう自信喪失してゲーム作りやめるかもしれない。。
とりあえず予約トップ10とAppStoreの予約合計が2000件くらいあるので、あとはそこからどう拡散していくかかなと。 忙しい中アドバイスありがとうございます
コンセプトですか…ある様な無い様な…
まずは今の仮絵でゲームとして成り立つレベルまで突き進みます!
あと、ダークブラッドの成功をお祈りしやすっ! >>556
はい。お互い楽しいゲームが作れるように頑張りましょう! /i/|ii!//|!/!i/´i/ .|i |/ノ i\i!゙、:iヽ|:::| ヽ 'i ! ヾi |'!ヽ::::||::::::/:::::::::::::::::::::ヽ
i i 川i!ハ/" _! | │ 川 ヾ:ii ゙'∨ | ゙ヾiヽヽ;||:::::i':::::::::::::::::::::::::
ノ ノ/リ,,,,,,二三テ=''" ヽノ ル |ノノヽヾ ノ 、,,,ノ,、 iヽ:::||:::::i'::::::::::::::::::::::::::::
/  ̄ ´~~゙'''' ゙''‐- ..,, ,, ‐' `゙ヾミッ、,, ヽ::|::::/::::::::::::::::::::::::::::
,,イ| i' i" `'‐=' `'|/i!:::::i::::::::::::::::::::::::
i | :::::::ヽ::::ヽ::::::ヾ:: ゙、 l 〃::::: i//::::ハ::::::::::::::::::i:::
i i \\\\\ヽ ) ヽ ′′′ / /:::::/:::::::::::::::::::|::::
! | i ,,ィノ < :::: : /:::::/:::::::::::::::::::/::::
i! i i! /i/ ,r''''‐y'''.;、 \ /:::::/:::::/::::::::::::/:::::
゙i! | i /⌒' 、 Y:::::::::''::;;;;'.;.Y'⌒゙i /::::::/::::::/::::::::::::/::::/i
i i ゙! ん、,,__ヽノ:::::::::::::::::::;;;;;{,__,,,r'' /:::::::/::::::/::::::::::::/:::://
゙、ii! ゙| i ノ ゝ;;;:::::::::::::::::::;ノ 。 `i //:::::/:::::/::::::::::::/::::::/:::
ヾ!トl ゙iU i 。l '゛.. ‐ー:::::i | //::::::/::::::/::::::/:::/:::::i!::::::
iiミ! ハ i l ,,,,::: :::;;;;;...{ ° ゙、 //::::://::::/::::::/:::::/::::i::::ii::
i!ヾ!i ゙、! , ' |::: ::::ヽ ..} |゙ヽ......,.,.,.,,,///://::://::::/::::://::::i::::リ::
!ヽヾi i゙、 ___,,,/ }:: : ;;;::: ::::::::} レWノ'レi/、//::/:://:/:::/::/:::ハ:i |:: おやじ二等兵です。
アプリゲットさんに、リリース前レビューしていただきました。
https://appget.com/appli/view/73064/
テスターの方々からまだまだ改善の要望が上がってきているので、直前まで修正することになりそうです。 すごいっね
ゲーム会社に就職するとか考えなかったんですか?
もしくは今からでも
40歳でもってここまで出来れば欲しい企業ありそう ■ このスレッドは過去ログ倉庫に格納されています