トップページgamedev
1001コメント387KB

初心者専用スレ「シミュレーションゲーム」を作らない?

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。04/03/20 10:18ID:HjCApWI8
ここはシミュレーションゲームをみんなで作るスレです。
各レベルの課題に沿って作ってみてあぷしてみましょう。

まとめ:
SLGを作らない?
http://gamdev.org/w/?%5B%5BSLG%A4%F2%BA%EE%A4%E9%A4%CA%A4%A4%A1%A9%5D%5D

あぷろだ:
http://gamdev.org/up/

話題元:
初心者のためのゲームプログラミング
http://pc2.2ch.net/test/read.cgi/gamedev/1023119134/852-

関連スレは>>2
各レベルの課題は>>3
0487名前は開発中のものです。04/10/01 03:00:03ID:7XNH8LNX
>>485
その現象、Lunaの謎仕様だよね
0488名前は開発中のものです。04/10/01 08:49:30ID:G4+XpGQx
>>485, >>487
> (カーソルが)時計のままです

WNDCLASS の hCursor が原因かも。
具体的には、Luna.cpp の 433 行目、LoadCursor の引数です。
リソースとして IDC_ARROW を指定する場合、
第 1 引数(hInstance)は NULL でなければならない。

(つい最近、API からウィンドウ生成するプログラムを作っていて、
これと同じ現象に遭遇しましたのです。)

私は Luna 使いではないので、これで解決するかどうか確認できていませんが
参考までに。
048948004/10/02 03:31:44ID:oJBUqTYI
>>488
ありがとうございます!修正できました
ライブラリのソースも読めるようにならないとこれからキツそうですね(´д`;
もうちょっとまともにプログラム組めるようになったらライブラリの内容も理解できるように勉強していきます

ときどき止まるのはフラグのミスでした。再うpしました
http://gamdev.org/up/img/1455.lzh
049048204/10/03 12:14:31ID:CSbnP8ss
>>489
今度はバッチリ動いたよ
049148004/10/03 16:04:48ID:71djPH3t
>>481,482,484-485,487-488,490
ありがとうございました
ソースコードを整理してからまた次のレベルに挑戦します
049248804/10/03 19:23:53ID:w+IariXr
>>489
動きました。
マウスカーソルの件は、本家の方にも報告しておきました。
049348504/10/03 22:44:31ID:pU4YUoOi
>>489
問題なく動いてます。
これからも、がんばってください。
0494名前は開発中のものです。04/10/09 04:35:59ID:GCfBCoIO
言語ができなくともゲームが作れそうなツール作れでつ
ツクールの奴はへぼいのでいやでつ
0495名前は開発中のものです。04/10/09 04:39:59ID:5XbefvOQ
>>494
【2D】ゲーム作成ツールGameMaker【マンセー】
http://pc5.2ch.net/test/read.cgi/gamedev/1087068523/
0496名前は開発中のものです。04/10/10 01:15:49ID:hHFLHP4A
>>494
ソースが公開されているものを自分なりに改造していけばいい。
0497名前は開発中のものです。04/11/01 22:54:23ID:R/4rg+AR
よし、作るぞ
0498名前は開発中のものです。04/11/01 23:57:24ID:CJbTFtu+
まとめwikiみたけど最後まで作った人多いな
0499名前は開発中のものです。04/11/01 23:58:15ID:kpBm/1EZ
>>497
マジで?
0500名前は開発中のものです。04/11/02 00:43:23ID:kGUpB27K
>>498
でも課題を全部クリアしてもシミュレーションゲームとしての完成型にはほど遠いデス。
0501名前は開発中のものです。04/11/04 14:26:21ID:tlH/X4SF
HEXマップのシミュレーションゲーム作ってる人っていないみたいだけど
何でだろ?やっぱ難しいのかな?
050250104/11/04 14:51:16ID:tlH/X4SF
>>501
と思ったけど課題がマス目か・・・
失礼。
0503名前は開発中のものです。04/11/05 21:22:51ID:5K9qavRG
>>501
奇数マスを半分ずらして表示させる方法なら大して難しくない。





050449704/11/06 16:17:37ID:GTFu98jB
>>3の課題のレベル3まで出来たとです。

スクエア型で作ってるのを奇数マスずらしてヘクス型にしてみたけど
結構面倒ね。
0505名前は開発中のものです。04/11/07 01:46:53ID:o3AqdDyh
>504
うpきぼん
0506名前は開発中のものです。04/11/10 19:04:41ID:Xdpu3j9/
今日から作ろうとカキコしてみよう

少しはやる気がでてくるかなあ…
0507名前は開発中のものです。04/11/11 20:55:30ID:BdgjR2sH
>>505
正直うpできる出来じゃないです。
いまんとこ画像何にも使ってないし、色合いとか見やすさ最悪。
操作性もわりーわりー。

>>506
がんがれ!
050850604/11/12 01:21:10ID:5w/uy/Y6
LEVEL3までできますた
http://gamdev.org/up/img/1849.zip

LEVEL4考え中
ここが最初の正念場かな…
0509名前は開発中のものです。04/11/12 01:32:13ID:sxmbeX7a
>>508
うごかない。何か必要?
0510名前は開発中のものです。04/11/12 15:40:17ID:5w/uy/Y6
今度は動くような
DirectX9以上です

LEVEL6ぐらい
http://gamdev.org/up/img/1853.zip
0511名前は開発中のものです。04/11/12 16:06:16ID:5w/uy/Y6
修正
http://gamdev.org/up/img/1855.zip
0512名前は開発中のものです。04/11/23 02:24:42ID:AGzanM/m
ユニットの移動範囲の求め方について考えてみた
EXCELマクロで動作

ttp://gamdev.org/up/img/1952.zip
0513名前は開発中のものです。04/11/23 09:53:20ID:GEK4NpGQ
定期保守
051451204/11/23 21:38:05ID:R3dR+Mw1
検索アルゴリズムに違いがあったので修正
ttp://gamdev.org/up/img/1960.zip
0515名前は開発中のものです。04/11/23 22:04:25ID:0Xmb1bTq
EXCELマクロってEXCEL持ってないとダメ?
0516名前は開発中のものです。04/11/24 00:01:07ID:GEIHrGaH
前SLGに作ろうとしたけど途中であきらめたんでこんどこそ
0517名前は開発中のものです。04/11/26 18:50:05ID:/MleRMTw
六角形ヘクス型シミュってやっぱり難しいのか…
どうやったらできるだろう?
0518名前は開発中のものです。04/11/26 19:08:47ID:+6Q9y6yQ
正解なんて無いから自分でいろいろと試してみるといいよ。
それを考えるのも楽しみの一つだ。
0519名前は開発中のものです。04/11/26 23:10:59ID:/MleRMTw
あの画像貼り付けって、横方向にはできないのかね?
それならできそうなんだが…
0520名前は開発中のものです。04/11/27 00:28:57ID:zVwQvL/a
Thx、bmpを縦長にして、mod演算子で奇数判定させて二種類のチップを敷き詰めた。
(長方形の下の方にヘクスがあるのと、上の方にあるので一枚ずつ、それを連続敷き詰めした)
将来的には同じチップを使いつつ奇数判定が出たらその上に別のチップを置くことで解消したい。
0521名前は開発中のものです。04/11/27 08:28:22ID:a7a92uR3
//HEXマップ用 画面、論理座標変換

const
PANELSIZE = 16; //マスの大きさ

var
FScroll:TPoint; //この値だけ左(上)にスクロール

procedure TMapManager.MapToDisp(const MapPt:TPoint;var DispPt:TPoint);
begin
  DispPt.X := (MapPt.X - FScroll.X) * PANELSIZE;
  DispPt.Y := (MapPt.Y - FScroll.Y) * PANELSIZE + ( (MapPt.X mod 2) * PANELSIZE div 2);
end;

procedure TMapManager.DispToMap(const DispPt:TPoint;var MapPt:TPoint);
begin
  MapPt.X := DispPt.X div PANELSIZE + FScroll.X;
  MapPt.Y := (DispPt.Y - ((MapPt.X mod 2) * PANELSIZE div 2 )) div PANELSIZE + FScroll.Y
end;
052251204/11/27 11:19:28ID:H8JrPqzt
Delphi版デモを作成。 

Level3,4ということで
ttp://gamdev.org/up/img/1994.zip
0523名前は開発中のものです。04/11/28 10:29:31ID:WZsWBfV7
ボタンを作成したんだけれど、コンパイルしても表示されない…
ナゼ?

Button := TButton.Create(Self);
Button.Caption := 'S-1';
Button.Height := 25;
Button.Width := 33;
Button.Left := 776;
Button.Top := 200;
0524名前は開発中のものです。04/11/28 10:53:26ID:WZsWBfV7
補足、プログラム内で直接生成。
Private
Button : TButton;
もちゃんと記述済み。
0525名前は開発中のものです。04/11/28 11:00:09ID:d9mXyZoD
>>523
(1)Parentを指定しなければならない。
(2)Showしる。
(3)つーか板違い。
0526名前は開発中のものです。04/11/28 11:07:17ID:WZsWBfV7
そうか…ShowとParentか…orz
板違いだし。(SLGの開発中の質問なんだけどさ。)
0527名前は開発中のものです。04/11/28 12:39:16ID:6Ofdm5gH
>526
シミュレーションと関係ない部分だからだろ
シミュのアルゴリズムとかならいいと思うけど
0528名前は開発中のものです。04/11/29 22:39:23ID:phHFzh2i
>>512
good job
参考にさせてもらいます
0529名前は開発中のものです。04/12/19 20:03:31ID:uIH0Rdkn
ヘックス型マップの移動って、どうやってやるんだ?
三平方の定理で1マスずつ図るのか?
0530名前は開発中のものです。04/12/19 21:01:58ID:dr+alDrs
Y  X→
↓ 0 .1 .2 .3
0 □□□□
1  .□□★□
2 □☆□□
3  .□□□□

こういうマップで、探索開始地点の座標が(X,Y)だったら…
以下の座標へ移動可能判定を行う。

OD = Yが奇数なら+1,偶数なら-1;
(X,Y-1)
(X+OD,Y-1)
(X-1,Y)
(X+1,Y)
(X,Y+1)
(X+OD,Y+1)

たとえば
★位置(2,1)なら、(2,0)(3,0)(1,1)(3,1)(2,2)(3,2)
☆位置(1,2)なら、(1,1)(0,1)(0,2)(2,2)(1,3)(0,3)
0531名前は開発中のものです。04/12/19 21:44:31ID:uIH0Rdkn
そうすると、その式を保存して、1マス異動する毎に移動力を減らしていき、0になったらそこで終了、
既に移動したヘクスを保存しておいてそれを繰り返す、というのでいいのかな?
0532名前は開発中のものです。04/12/19 23:02:06ID:dr+alDrs
その辺は四角形型マップと同じ。
基本は移動力が尽きたりマップ範囲外になるまで再帰検索。
四角形型マップについては例が上の方にいくらでもある。
0533名前は開発中のものです。05/01/08 10:15:05ID:M7Dhiaq8
あけおめー
なんだかカコイイスクリーンショットがうpろだに上がってるけど、どこのスレだろう
上で作ってる人?
http://gamdev.org/up/img/2154.jpg
0534名前は開発中のものです。05/01/10 16:44:35ID:LB/T6I4k
|ω・´) ダレモイナイ・・ウプスルナラ イマノウチ

ヤター!Level1できたよー!
http://gamdev.org/up/img/2225.zip
C + SDL で書いたソースと cygwin で作ったバイナリが入ってます
0535名前は開発中のものです。05/01/18 18:28:11ID:nWy7J/XJ
HSPでファイアーエムブレムもどきを作ってる…。
まあ、構造体やポインタできなくてもなんとかなるもんだな。
0536名前は開発中のものです。05/01/18 19:34:44ID:d79K1/QN
t
0537名前は開発中のものです。05/02/05 13:58:30ID:q/Xovx9Q
0538名前は開発中のものです。05/02/05 14:53:48ID:Z4sjRmuC
0539小学生グラマVer1.005/02/05 15:07:00ID:BK/88f3s
>>535
できたら発表求む。
0540名前は開発中のものです。05/02/05 18:20:21ID:IipTh/gV
さすが小学生だ。空気読めてねぇぜ。
0541名前は開発中のものです。05/02/06 17:02:07ID:Da8m3Kpn
>>539
代わりに

0542名前は開発中のものです。05/02/10 06:23:22ID:0glaX97a
>>635
卒研をかねているのでかなりごたごた、しかもグラはシミュレーションRPGを使ってるんだが大丈夫だろうか?
0543名前は開発中のものです。05/02/10 06:23:56ID:0glaX97a
すまん、>>549だった。
0544名前は開発中のものです。05/02/11 00:31:50ID:pD+B9ZfR
グダグダだな。
0545名前は開発中のものです。05/02/11 01:16:21ID:G0/LXJgD
とりあえず、

>>537-541
ガッ!
0546名前は開発中のものです。05/02/19 00:39:40ID:lMuS3VdB
SRC使えよ

ttp://www.src.jpn.org/
0547名前は開発中のものです。05/02/19 02:01:49ID:gbt/TKAd
SRCは元ネタがあれ故にファンタジー系やリアルミリタリー系と相性が悪すぎ。
0548名前は開発中のものです。05/02/19 03:14:57ID:PBWmYR9A
SRCはインターフェースが古すぎる気がする
0549名前は開発中のものです。05/02/19 04:08:10ID:RpiaXR9Y
Windows標準のGUI使ってるんだっけ?
0550名前は開発中のものです。05/02/19 08:55:19ID:1rAF19AM
ほとんどGUI操作
0551名前は開発中のものです。05/02/20 18:30:49ID:Sdsq6e+G
SRCみたいなゲームを作りたいんですが、
このスレのlevel4のように障害物のあるものは
具体的にどう作ればいいのか分かりません。
移動者の中心から全移動ルートを一マスずつ探ればいいのでしょうか?
だけど無意味なルートの処理(既に移動可能と判断されてるマス)
まで調べてしまい、処理速度に大きな影響がでてしまいませんか?
0552名前は開発中のものです。05/02/20 21:14:47ID:MZHZOmE6
>>551
今の段階で、どんな方法で計算しているか分からないけど、
既に可能な所は、読み飛ばすとかすればいいのでは。
0553名前は開発中のものです。05/02/20 21:54:04ID:D20139+p
自作ゲーム作ってるんだけど、
Age of Empires IIってPCゲーム友達からもらって遊んでみたら、
マップエディタを作る気が失せた・・。
0554名前は開発中のものです。05/02/20 22:09:18ID:43VBy+PF
もらうなよ。 違法だぞ。
体験版にしとけ。
0555名前は開発中のものです。05/02/20 22:09:29ID:yMDXw/8g
>>551
>移動者の中心から全移動ルートを一マスずつ探ればいいのでしょうか?
基本的にはそう。障害物があるマスは移動ルートの検索から外す。

>処理速度に大きな影響がでてしまいませんか?
凄い出るけど、それは基本的な移動アルゴリズムを作り上げてから考えても遅くはない。
055655205/02/20 22:12:02ID:MZHZOmE6
>>551
あっ、たぶん再起法でやっているのかな。
このスレにも出てきている、ダイクストラ法なら、
地形によって遅くなるという事はないと思う。

>>553
よく分からないけど、普通の2D用のマップエディタを作ろうとしていた所、
そのゲームを見てしまった衝撃を受けたという感じ?
0557名前は開発中のものです。05/02/20 22:54:00ID:YD13bL3p
>>553
何故?
0558名前は開発中のものです。05/02/20 22:59:15ID:D20139+p
>>557
とても作りやすい構成だったので、量がおおいのは置いといて。
質も良かった。何十人もの人が長い年月かけて作っているように思えたし。
>>554
譲渡はだめなんですか?
CD無いと遊べないから、遊べる権利も譲ったという解釈は?
0559名前は開発中のものです。05/02/20 23:01:30ID:yMDXw/8g
とりあえず違法行為か疑念を招く行為を掲示板に書き込むな。荒れる。
056055105/02/22 01:52:48ID:kB9x/Qrk
>552>555
スマソ。今はBCC使ってるんですが、
シミュレーションはVBでちょっと簡単なもの作ったくらいです。
ついていけなさそうなので出直してきます(´・ω・`)
0561名前は開発中のものです。05/02/22 08:03:24ID:EPbyao3k
>>560
BCCなら、そこの部分の簡単なプログラムをうpして上げましょうか?
0562名前は開発中のものです。05/02/22 11:50:17ID:gi6gzinK
BCCってかっこわりいフォルダ名とか暴露されるだろ。
敵国のスパイだな。
>C:\bcc55にすりゃあいいだろがタコ!!
心の問題だから駄目なんだよ!!
056355105/02/22 21:07:40ID:7DQGglZB
>561
d。けどダウソは禁じてるので。
大まかな仕組みと流れが分かれば
自分で何とか組んでみたいです。
056456105/02/23 01:15:33ID:3gPHR2JM
>>562
exeを逆アセンブルするとかで?

>>563
出来るならその方がいい。製作がんばってください。
0565名前は開発中のものです。05/02/23 10:26:24ID:DyDx9zzA
>>561=>>564
バイナリエディタで見ただけでアウト!!だ。
056656105/02/23 19:11:22ID:3gPHR2JM
>>565
フォルダ名は見つからなかったけど、どこら辺?
プログラム中で使った文字列と、使ったライブラリ関数の名前は表示された。
キャラ、アイテムの名前とか丸見えでびびった。
0567名前は開発中のものです。05/02/23 22:07:32ID:p6wvwP+M
ライブラリをリンクする時にフルパスで指定してたりすると丸見えになるな
0568名前は開発中のものです。05/02/24 13:54:50ID:SJ9IDH8n
スパゲティソースでもいいからうpしてくれ。
0569名前は開発中のものです。05/02/24 21:32:27ID:ObnyDdFD
512とか
0570名前は開発中のものです。05/02/27 21:40:51ID:6KCxyQGS
よーし、おじさんもシミュレーションつくっちゃうぞ!!
まずはレベル1から挑戦だ
0571名前は開発中のものです。05/03/02 17:41:19ID:/Kr8mOUt
ttp://gamdev.org/up/img/2386.zip
lv4まで作ってみた。
移動可能範囲検索がよく分からん。
移動力を上げるとかなり重くなる。
あと、ソースにコメントを付ける習慣がまったくないんだけど、やっぱ付けるべき?
0572名前は開発中のものです。05/03/02 19:39:26ID:sPyl3EBw
それよりも関数名に機能を示す名前を付けた方がよい。
0573名前は開発中のものです。05/03/03 03:19:56ID:LcIzefXc
>>571
半年後に見たとき、コメント付けときゃよかったと後悔すると思う。
057457105/03/03 09:35:25ID:JAyscznJ
レスありがd。
>>572
関数名か...かなりテキトーに付けてるからな。
もう少し考えて付けるようにするよ。

>>573
なるほど、後のことは全然考えてなかった。
でも、半年後に見直すこと自体ない気がする。

でも、まぁこれからは今後のことを考えて、関数名もコメントも分かりやすく付けるように努力すろ。
057557105/03/03 09:36:03ID:JAyscznJ
努力す"る"
057657005/03/05 10:21:16ID:4Hpkt+sN
やっとレベル1ができた
ちょっとごちゃごちゃしてるかな

http://gamdev.org/up/img/2390.png
057757005/03/11 18:25:17ID:yIB/u6EU
Level4までできた。

http://gamdev.org/up/img/2416.zip
0578名前は開発中のものです。05/03/11 19:51:37ID:KL0zJtF0
>>577
良い。探索が速いね。

移動のアニメはしないの?
経路探索も面白いんだけど。
057957005/03/12 00:37:32ID:7ponwXKB
おっ、やってくれたのか。ありがとう。
探索は再帰処理だけど、思ったより早かったよ。
明日は休みなので、経路探索挑戦みる。
0580名前は開発中のものです。05/03/12 01:26:23ID:QZaGJYEK
経路探索アルゴリズムって起点から対象までを総当りでやればいいの?


0581名前は開発中のものです。05/03/12 01:43:09ID:vfjAxALQ
経路探索は、移動範囲探索の時に、マスごとに残り移動力を記録しておいて
移動先を開始地点にして、上下左右のマスの中で、記録してある移動力が
大きい方へ移動を繰り返していくと、最終的に必ずプレイヤーの現在位置へ戻る。

00100
01210
12321
01210
00100

の、「3」がプレイヤーの現在位置で、たとえば、(2,0)の位置へ移動したい時、
(2,0)→(2,1)→(2,2)と、数字が大きくなってるでしょ。
0582名前は開発中のものです。05/03/12 01:49:50ID:vfjAxALQ
ちなみに、他の方法としては、
移動範囲探索の時に、進んだ方向を記録していって
マスのフラグを立てる時に、それまでの移動方向もマスに持たせる。

>>581 の図(?)で、
(2,0) のマスは、「↑↑」
(3,3) のマスは、「→↓」
みたいな感じで。
移動方向は2bitで表現できるけど、1byteにした方が使いやすいかな。

他にも良い方法があるかも知れないけど、知ってるのはこの2つ。
おすすめは前者だけど、再帰使うからバグが出る可能性も。
0583名前は開発中のものです。05/03/12 01:51:09ID:QZaGJYEK
ttp://kyu.pobox.ne.jp/softcomputing/ai/ai3.html
ここにあったか、スタック、キューは使いようってことだね

(縦×横)×(縦×横)の配列データをマップロード時に先読みするのはありなのかな?
0584名前は開発中のものです。05/03/12 02:10:14ID:vfjAxALQ
なんで(縦×横)の二乗分なの?
データとしては大きくない?
0585名前は開発中のものです。05/03/12 02:22:55ID:QZaGJYEK
>>584
別のエディタであらかじめ計算したデータを使えば早いかなと思いまして。
でも縦256*横256なら4GBなんですね・・・電卓叩いてびっくりした
0586名前は開発中のものです。05/03/12 02:27:06ID:QZaGJYEK
>>582
で、この方法の意味を考えてたんですが
これ移動範囲可視の後の実移動の際、2度目の検索がいらないやり方ってことですかね
0587名前は開発中のものです。05/03/12 03:15:33ID:vfjAxALQ
>>586
そう。
移動先のマスに保存しておいた移動経路を辿るだけだから、探索時間は0。
ただし、マップが大きいと、メモリ食うかも。

最高移動力を10として、移動方向を1byteで扱うなら
経路保存に必要なのが1マスにつき10byte。

もし、すべてのマスに、この経路保存変数を持たせると、
256*256のマップの場合640KBも使うことになる。

もちろん、移動範囲内だけ保存するようにすれば、少なくて済むけど。
移動力10のユニットが、平地の真ん中に居た場合、移動可能範囲は
220マス。(範囲計算は (1+n)*n*2)
220*10 = 2200 で2KB程度。
■ このスレッドは過去ログ倉庫に格納されています