Admin * New entry * Up load * All archives 

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

 

旧 ゲーム的な何か。

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

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

テーマ: プログラミング

ジャンル: コンピュータ

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

Posted on 00:15:19 «edit»

Category:ポケコン

停滞期脱出 

今まで気分的に忙しくて書く気が今一つ起きなかったのですが、ようやく一区切りつきました。Signalです。
「信長の野望POKECOM」を作ろうと決めてから2カ月。ようやくテストプレイまでこぎつけました。
今日はポケコンの紹介を兼ねて作成したゲームの中身を解説してみましょう。

私の持っているポケコンはCASIOの最新のポケコン、FX-890Pです(但し1992年発売)。
某電気街でお年玉をはたいて買ってから4年経ちますが、どこでもプログラムできる便利なものとして、通学途中などに活躍してきました。
今や工業高校の学生などにしか利用されないポケコンではありますが、生の機械語を扱えるものとしては最も手軽なのではないでしょうか。

・画像
ぽけこん
関数にキーボードを付けたような感じの見た目。画面の表示はモノクロ32文字×4行(192ドット×32ドット)です。
表示能力としては非常に貧弱ですが、この制約が逆に良い働きをしてくれています。
とは言ったもののCASIOは非常に遅いです。。GPRINTがうらやましい。

・スペック
CPU:i80188(16bit!)
メモリ:SRAM 64KB(フリーエリア52KB)
画面表示:192×32ドット
音:圧電ブザー・BASICにてBEEP音2種類サポート(アセンブリで制御可)
使用可能言語:BASIC・C言語・CASL・アセンブリ
表示可能キャラクタ:ASCIIコード、カタカナ、一部の漢字(年・月・日など)
おおまかなスペックはこんなところ。この時代にメモリ・ハードディスクに当たる部分をまとめて64KBしかありません。お陰様で今回のプログラムもかなり容量的にギリギリになってしまいました。危ない危ない。
とはいえこのメモリにもいいところがあります。それはSRAMだということ。電源をいつ切ってもデータは保持され続けます。PCより圧倒的に手軽ですね。起動時間ゼロ。

CPUはなんと8086系統の16bit。16bitのポケコンはこれ以外に存在しません。そのため8086の解説本がほぼそのまま適用出来て非常に便利でした。

さて、このような貧弱なスペックで作るわけですが、一応多少は彩りを添えることもできます。
↓タイトル画面はコチラ
タイトル画面
オリジナルキャラクタは1文字×4つしか作れないのですが、それを次々読み込むことでタイトルロゴの表示をしてみました。
ドットを作る→手計算で16進数のコードに変換→打込み
だったのでかなりきつかったです。

今回作った信長の野望は戦略画面、戦術画面に分かれています。システムのレベルとしては初期の信長(全国版、戦国群雄伝)に近いです。
もっとも兵士を地域ごとに管理するなんていうシステムを作るだけのメモリもないので、軍は大名ごとの管理になっています。
・戦略画面
戦略画面
左側のは日本地図を表した(つもりの)ものとなります。左から九州、四国、近畿、関東、東北と進んでいます。
各文字は勢力名を表しています(テ→伊達、イ→今川、ミ→三好、ケ→毛利など)。
もっともそのまま入れるとかぶってしまうので一部は頭文字ではないです(カ→里見義堯の「か」だったりします)。
この画面で内政などを行います。大名は24人、地域数は32です。
続いて、
・戦術画面
戦闘画面
戦争時には次のようなシンプルな戦術画面になります。流石にHEX戦は実現不可能でした。
上手く軍を操って勝利し、天下統一するのが目標となります。

概略としてはこんなところです。パラメーターなどの解説は次の機会にしましょう。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

Posted on 01:31:18 «edit»

Category:ポケコン

ポケコン熱再燃 

試験も終わったので、以前書いたパックマンを作るつもりだったのですが、ふと久しぶりにポケコンの電池を変えてやってみたところ、またゲームを作るやる気がわいてきてしまいました。Signalです。

ポケコン(カシオ製、FX-890P)は中1のときに思わず衝動買いしたものです(PSPより高かった。。)。一体全体どこでポケコンなんか調べてきたのか謎ですが、それ以来おもにBASICでゲームなどを作ってました。

今までに作ったプログラムとしては
・プログラムランチャー
・テキスト三国志(テキストベースの戦闘ゲーム。登場武将なんと200人超の超大作でした)
・電車でGO!もどき
・パックマンもどき(表示が遅すぎて完成度は8割)
・タイミングゲーム(弾をタイミングよく跳ね返す。処理速度がメモリの調子によってまちまち)
などがあります。
ゲームばっかり作っているのは使う用途がないからです;;(もちろん今もありません。最近数ⅢCをやっているので統計などに使えそうではありますが)

そして、今作っているのが「信長の野望POKECOM」です。
上で作った物の中で一番時間と労力を割いたのが「テキスト三国志」だったので、色々考えた結果やっぱりそういうものを作ることにしました。
とはいえ、今回は戦闘のみだったテキスト三国志と違いきちんとマップを作って、1つのゲームとして成り立つようにしなくてはいけません。果たして作れるのか、そもそも64KBに入るのか。。
実際には変数領域などでプログラム本体は40KB程度が限界なので、どうにかして必要な機能を取捨選択する必要があるでしょうね。

今現在仕様をまとめている真っ最中なので、次回の記事にでもシステムの概要を書いてみたいと思ってます。完成するといいなぁ。。

ではでは。

テーマ: プログラミング

ジャンル: コンピュータ

tb: (0)     com: (0)

go page top

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