Admin * New entry * Up load * All archives 

C++&DirectXでプチプチゲーム制作をしています。文章力?気合で乗り越えるさ。

 

旧 ゲーム的な何か。

11«1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.»01
2010年12月の記事一覧

« 11月     01月 »

Posted on --:--:-- «edit»

Category:スポンサー広告

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

tb: --     com: --

go page top

Posted on 23:40:19 «edit»

Category:ポケコン

1バイトの重みを知る 

3日連続の更新なんて今まであったでしょうか。Signalです。
今まで書いていなかった分がそのまま出てきているような気もします。

今日もAIのテスト。騎馬隊の弱体化、ソート関係のバグの修正などを行いつつ、疫病、一揆などのイベントを追加してひとまず完成にこぎつけました。
そのプログラムですが、残り容量は92バイト。変数領域を多めに取っているので切り詰められないことはないのですが、本当にギリギリでした。
その原因は他でもないBASICのコマンドのせいなのですが(例えば表示場所を指定するLOCATE命令はそれだけで6バイト+αです。今回のような画面を作ればやはり。。)、納めるためにかなりのコマンドを犠牲にしました。

最終版のコマンド数は以下の通りです。
・戦略画面
①シュツジン②チョウヘイ③クンレン④カイハツ⑤チクジョウ⑥ホドコシ⑦ゼイリツ⑧ドウメイ⑨ミツギモノ⑩ジョウホウ
・戦術画面
①ツウジョウ(コウゲキ)②キシュウ③ハカイ④ヘイホウ(9種類から兵種、訓練度に合わせて自動選択)⑤コンラン⑥バセイ⑦テアテ⑧コブ⑨ゲキレイ

合計19コマンド。本当は入れたかった勧告コマンドや扇動コマンドもありません。一応これでゲームとしては成り立つと思うのですがどうでしょうか?

他にも今回学んだことは変数を単純に使っただけでは無駄が多いということです。
例えば友好度、本家だと0~100ではありますがそれを1つ1つ変数にするにはメモリが少なすぎます。そこで、文字列という形でまとめて1つで表します。勿論1ケタしか使えません。
例:とある年の織田信長の友好度
35357377171045311535733
勢力番号が1~24まで振られており、各桁がその勢力との友好度を表します。流石信長、仲悪いです。
おまけに開始は桶狭間前の1560年なので、やっぱり大体の場合滅びてしまいます(これでも数年は持つようになったのですが)。

これで使用メモリ量が1つ10バイト×24勢力×24勢力=5760バイトが1つ35バイト×24勢力=840バイトと大幅節約となったのですが、これには落とし穴がありました。
このポケコン、数字の配列はある割に文字列にはなかったのです。そのため、ある値を取り出すだけでも一苦労です。文字列を指定文字数取り出す関数を使って取り出し、1つ書きかえるときは文字列を作り直す必要があるので、非常に処理を食いました。

そのため、一部の変数は配列で用意せざるを得ない場合もありました。バランスが肝要ですね。
結果として1ターンに2分半かかるというかなり厳しい思考時間となってしまいましたが、なんとかメモリを抑えることもできたという次第です。

もっともこんなみみっちい話は現代のプログラムに当てはまる話では全くありませんが、処理量が莫大なシミュレーションゲームなどでは起こりうる話です。みなさん、1バイトも大切にしましょう。

とりあえずそれっぽくオチを付けたのでこの辺で。ではでは。
スポンサーサイト

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 00:58:39 «edit»

Category:ポケコン

信長の野望POKECOM紹介 

こんばんは。Signalです。
今日数日前にNHKで放送されたゲームに関する番組を見たのですが、ゲーム産業を取り巻く状況は厳しいようですね。大学受験が徐々に迫っている身としては非常に見ていて気疲れするものでした。
出来ることなら情報系の職業に進みたいものですが、一筋縄ではいかなそうです。海外逃亡もありかも。。

それでは前置きはこのくらいにしましてポケコンに話を移しましょう。
今日は1日中プログラムを走らせてAIのテストプレイにいそしんでいました。まだデータ量の少なかった初期の頃は信長が何度やっても1年以内にキルされるという情けないゲームだったのですが、度重なるバランス修正の結果、今日初めて大勢力に成長してくれました。
もっとも、AIの税率調整のプログラムに不備があった関係で衰退し、南部が天下を統一するという大変情けない結果となってしまいましたが。。
今この記事を書いている現在も動かしているのですが、やはり上杉が非常に強い。隣接国が少ない割に領地を2つ持っているのであっという間に近畿に進出してきます。地理条件をほどんど再現出来ないので適当に弱体化する以外に手がないのがつらいですね。大雪イベントでもつけようか。。

現在の状況はこんなところ。今日はパラメーターを紹介しようと思います。
昨日の記事で大体察しはついているかと思うのですが、メモリーが少ないためパラメーターは必要最小限にとどめてあります。武将データなんて入れるスペースはありません。

・勢力別データ
①SHEI…兵士数 5000~100000程度
②SFUS…負傷兵数 戦って減った兵士の7割ほどは生存して負傷兵となります。
③SSIK…士気 0~100 このゲームで最も重要な要素。軍の強さが大きく変わります。
④SHYO…兵糧 10000~200000程度 兵糧。足りなくなると士気が下がり、兵士が脱走します。
⑤TAX…税率 0~100% 標準25% 税率。上げると民忠誠度(後述)が下がります。AIの調整が難しい所。
⑥SKUN…訓練度 0~100 兵士の訓練度。初期値は大名の強さの指標にもなります。
⑦SYUK$(文字列データ) 各勢力に対する友好度(1~9) 宣戦率に影響します。
⑧SDOU$(同) 同盟フラグ(数字が有効期間を表す)

基本的なパラメーターはこれだけです。そもそも勢力ごとに兵士数がまとまっている時点で厳しいですね。
文字列データというのは、"113579979193..."のようなデータを用意して、各桁が各勢力と対応しているというものです。配列を確保することは出来るのですがメモリ不足ゆえの苦肉の策です。

・地域別データ
①POP…人口 1000~9000程度 実際の人数/100を想定。合計すると当時の総人口(約1000万)になるように調節しました。
②HEK…徴兵可能人口 そのまんま。これは都市ごとに用意されています。
③KOK…石高 100~300程度 秋になるごとに収入がこのパラメーター分だけ入ります。
④MIN…民忠誠度 0~100 おなじみですね。低いと一揆がおきます(まだ実装していませんが)
⑤WAL…城防御度 0~150 各地域ごとに城の防御度を用意しました。例えば相模の小田原城は最高値の150。敵を寄せ付けません。

地域データに至ってはこの少なさ。普通のノブヤボシリーズには商業、治水などのパラメーターも存在しますが、それをいれる余裕もありませんでした(現在残り容量240Byte)
毎年秋のターンに収入が石高に応じて入り、民忠誠度と城防御度を制御することで内政を行います。

以上が主要パラメーターです。もちろん他にも多数あるのですが、以下に要素を切り詰めているかが分かると思います。次回はその話を中心にやろうかなと思います。

ではでは。

おまけ 戦略中。。。
戦略中

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。