Admin * New entry * Up load * All archives 

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

 

旧 ゲーム的な何か。

04«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.»05
このページの記事一覧

    

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バイトも大切にしましょう。

とりあえずそれっぽくオチを付けたのでこの辺で。ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

go page top

 この記事に対するコメント 

go page top

 コメント投稿 
Secret

go page top

 トラックバック 
トラックバックURL
→http://frontiersman.blog61.fc2.com/tb.php/201-ffe9c6ab
この記事にトラックバックする(FC2ブログユーザー)

go page top

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