したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

ゲームプログラミング相談スレ

1とじか:2014/03/14(金) 22:07:05 ID:0r4YgB120
「リョナゲー作るためにプログラミングの勉強始めたけど難しい!!」という人のために

Unity、DXライブラリ、HTML5など
ゲームプログラミングによってリョナゲー制作している人たちで助け合うスレです

・こういう機能作りたいんだけどアルゴリズムが思いつかない!
・こういうアルゴリズムを実装したいんだけどどう書けばいいの?
・こういう処理作ったんだけどもっと良い書き方無い?

などなど

2とじか:2014/03/14(金) 22:14:35 ID:0r4YgB120
というわけで、とりあえず作っておいて損は無さそうなので立ててみました _( _*°ヮ。)_

相談する方は、その時点で既に書いてあるコードがある場合、
それも一緒に提示するとより具体的なアドバイスがもらえると思います

わたしはDXライブラリ、HTML5の質問なら答えられますが、
それ以外のツールの相談も、とりあえず相談しておくと誰かが答えてくれるかも知れません(無責任

3名無しさん:2014/03/14(金) 23:19:41 ID:.q8DF1d60
なるほど今まで無かったのが不思議なくらい有用そうなスレだ

4名無しさん:2014/03/15(土) 09:46:17 ID:hcYBerM60
>>1
乙!さすがとじかさんだ!
これからリョナゲ作りを始める人のためにも
リョナゲ製作中に苦渋に直面した人のためになる
極めて有益なスレだ!

5名無しさん:2014/03/17(月) 23:51:04 ID:GYMvfS9c0
雑談とどっちで聞こうか迷ったんですが、こっちで質問したいと思います
パーツアニメの基礎知識を知りたいんですけど
参考にしたサイトとか書籍などありましたら教えてもらえないでしょうか

6とじか:2014/03/18(火) 02:40:41 ID:uyHTW.fY0
えーとー、
ぶっちゃけ完全な我流です!!(ババーン

RRのパーツアニメは、基本的には
各パーツに位置・角度・拡大率の情報を個別に持たせておいて、それらを順番に描画してるだけなので、
アイデア的にはそんなに難しいことはやってないです
(膝とか肩とかの接合部分の描画にちょっと一工夫したりはしてますが)

あ、ついでに言っておくと、
フロマージュのパーツアニメは大体RRと同じ方式で、
CCのパーツアニメは各パーツの結合関係と角度を保持しておく方式(3Dモデルのボーンに近い)
だと聞いた覚えがあります

とりあえず、どういう表現をやりたくて、それを実現するためにどの方式を取るのがいいのか、
という部分から考えてみるといいんじゃないでしょうかー ヾ( ノシ*°ヮ。)ノシ

7名無しさん:2014/03/18(火) 19:26:12 ID:D.XfS6uE0
パーツアニメだと、この辺とか参考になるんじゃないかな
ttp://nextframe.jp/flash/flashLec.html

8名無しさん:2014/03/18(火) 23:24:13 ID:erzU1zok0
>>6
>ぶっちゃけ完全な我流です!!(ババーン
ええー、RRが我流ってマジですかー!!w
てっきりパーツアニメ知りたければこれ読んでおけみたいな
セオリー本があるんじゃないかなーと思って軽い気持ちで質問したんですが
独学の世界だったんですねー
ほんとう貴重なお話ありがとうございます、参考にして自分なりの方法探そうと思います

>>7
うわー雰囲気掴めました、ありがとうございます
これはCCタイプ? なのかな?
でも結構簡単にそれっぽく作れるものなんですねぇ

9とじか:2014/03/19(水) 03:48:10 ID:OPDwhTOs0
あと、補足で、これは個人的な意見ですけど、
パーツアニメーションを実装する上で一番大変なのは、
如何にそのアニメーションのデータを作成するか(=エディタをどう実装するか)という部分だと思います

エディタを実装する労力に比べたら、
アニメーションを描画する処理の実装自体はそこまで難しくないんですよね _( _*°ヮ。)_
(RRにしたって、極論、各パーツを順番に描画してるだけですし)

一方でエディタの方は、使いやすいUIとか、管理しやすいファイル構成とか、
そういうゲームプログラミングとはまた異なった要素を考えないといけなくなってくるので、
わたし自身も今の方式に至るまでは色々試行錯誤した記憶があります


リョナゲーを作る上でパーツアニメってすごく有用だと思いますし、
後続の人たちのためにもどこかの段階でRRのモーションツールを公開できたらいいなーとも思ってるんですけど、
サポート責任とか、マニュアル作成の手間とか考えると、ついつい二の足を踏んじゃう今日この頃です _(:3」∠)_

10名無しさん:2014/03/20(木) 01:01:44 ID:4QXVQN2s0
>>9
はえー、すっごい大変そう
でもパーツアニメ用のツールはあったら有用そうですね

11あっちの186:2014/03/21(金) 10:34:55 ID:2yEVadvQ0
相談がしやすいスレが出来て凄く嬉しいっす〜

で早速、悩んでいるのですが
オブジェクト指向に挑戦を開始しまして、いろんなサイトのサンプル等を見ると
Game->nanika()
Game->ryonaru()

って形で書いてるのがほとんどなのですが、このGameってやつがゲーム制作にとても重要な書き方なのでしょうか?
virtualで同じメンバ関数をなんちゃらってとこまでは掴めてはいるのですが…

ゲーム制作特有なやり方となれば!と思い
amazonで猫でもわかるゲームプログラミングって本を買ってみたけど
パラパラ。…。て感じで本棚の肥やしになりました。
さらに
ttp://www48.atpages.jp/happynetwork/actiongame.html
ここの完成品コードを参考にしているのですが
まあ、とにかく超上級者の書き方をしているのですごいわかりにくい上にコンパイルすると
error LNK2019: 未解決の外部シンボル
とか出て全然基礎勉強ができない状態です。



そこで、よければ
Game->Aaa()
Game->Baa()
のやり方の本当に簡単な1+1=2;ぐらい単純なサンプルをいただけないでしょうか?
いろいろ弄って失敗したりして勉強してみたいので

あと、製作者の方々はプログラムの勉強始めた時どのような本を読んだり、また参考にしたサイトとかありましたか?
プログラマー遍歴など教えてもらえると、とても参考になります。

宜しくお願いします。

12名無しさん:2014/03/21(金) 23:18:24 ID:CmqCVWxQ0
>>11
リンカーのエラーはstaticなクラスの実体をどこにも定義してないからかも
あと質問の意図が分かりにくいのでもうちょい詳しく話してくれた方がいいかも
例えば汎用的なゲームクラスの作り方が分からないとか
シングルトンが分からないとか仮想関数の使い方がわからないとか・・・

個人的にオブジェクト指向はひとまず捨て置いて、クラスとかも見よう見まねで
とにかくキャラが動くだけーとかの簡単なゲームを作ってみるのがいいと思います
いきなりオブ指で先のことまで考えてプログラミングしようとするとあまりにも難しいので

13名無しさん:2014/03/22(土) 02:40:58 ID:ZDIP1brI0
>>11
ttp://dixq.net/
ゲームプログラム覚えるなら、このサイトがお勧め

ttp://toro.2ch.net/test/read.cgi/tech/1054813207/483
猫でもわかるゲームプログラムはこんな事書かれてるな〜
たぶんその本はハズレだと思う

ゲームプログラムって実はすごく単純で
while(1)で無限ループさせて、その中で全オブジェクト(描画とか毎フレーム実行するもの)を保持した配列を実行するだけ
引用URLのソースは何故か403でダウンロード出来なかったので詳しいことは分からないけど
Game->Run()の中でも同じような事をしてると思うよ

class CGameMain{
public:
void Run(){
while(1){
for(int i=0; i<128; i++)
GameTask[i]->Move();
}
}
private:
Object GameTask[128]; //オブジェクトが格納されている(そういうのを扱うクラスObjectがあるという仮定で)
};
void main(){
CGameMain Game;
Game.Run();
}
まあざっくりとこんなイメージ。

ちなみに自分は一時期やねうらお氏のサイトとか書籍を漁ってたのが下地になってますね

14とじか:2014/03/22(土) 02:48:27 ID:7zRDobj20
うーんと、>>11 さんがどこらへんに悩んでらっしゃるのかちょっと分からないので、
ひとまず一般的な話を垂れ流したいと思います

まず、オブジェクト指向というのは、「プログラムの書き方の流派」みたいなもので、
大体ざっくり言ってしまうと、次のような考え方に基づいた書き方を指します:
●プログラムにおける、各データとそれを操作する手続きを、一体化させて「オブジェクト」として定義して、
それぞれのオブジェクトがお互いに作用し合うような形で記述しよう
●オブジェクト内の細かい仕様や構造は外部から見えないようにしておこう(=カプセル化)

そして、クラスの機能を使ってプログラミングをすると自然と上の考え方を守ったような書き方になるので、
「オブジェクト指向=クラス」のような印象が持たれていることが多いです

オブジェクト指向(というかカプセル化)の直感的な例としては、わたし自身がよく使う例としては、
八百屋と、野菜の路上販売(セルフサービスのやつを想像してください)に例えることができます

八百屋さんで野菜を買いたい人からすると、八百屋の中身のデータ("野菜の在庫"とか"お釣り用の硬貨"とか)や
内部の細かい手続き("お釣りの計算"とか"棚から野菜を取り出す"とか)は気にする必要はなく、
単に八百屋さんに何が欲しいかとお金を渡せば、問題なくお釣りと目的の野菜を得ることができます

一方で、路上販売は、野菜を買いたい人自身が、お釣りの計算とかをする必要がありますよね
これをプログラミングの世界でやってしまうと、思わぬバグの元になったり、
後から見たときに処理の流れが掴みづらい、といった問題が生じます
ので、オブジェクト指向においてカプセル化という考え方は非常に重要な概念になります

15とじか:2014/03/22(土) 02:49:13 ID:yv/t42sg0
続いて、virtual の話をしましょう
世の中には、「呼び出し方は同じだけど中身の処理が違う、でも一緒に扱いたい」というものは沢山あります
さっきの話で言うと、八百屋さんだけじゃなくて肉屋さんでも「お金を出して商品をもらう」という点では同じですし、
ゲームの世界でも「アイテムごとに使った時の効果を変えたい」とか「敵の種類ごとに描画処理を変えたい」という話はよく出てきます
そして、カプセル化の考え方に基づくなら、使う側としてはそういう「中身の細かい手続きの違い」は気にせずに一緒くたに扱えると嬉しいわけです
そして、そういう時に便利なのが、virtual(→仮想関数;多態性)です

仮想関数の詳しい使い方は個々人で調べてもらうとして、
仮想関数を定義したクラスの基本的な使い方は以下の様な感じになります:
● 敵一般を表すクラスを EnemyBase として定義する
● 各敵のクラス(例:Slime,Worm)はEnemyBaseを継承して定義する
● 手続きが同じで中身が違う処理(例:draw())は virtual を付けて仮想関数として扱う
● 各敵のクラスのインスタンスのポインタは、EnemyBaseのポインタとしても扱える
std::list<EnemyBase*> enemies;
Slime slime;
Worm worm;
enemies.push_back(&slime);
enemies.push_back(&worm);
● ポインタから呼び出した仮想関数は、各敵固有の処理に置き換わっている
for(auto it=enemies.begin(); it!=enemies.end(); ++it) (*it)->draw(); // Slime,Wormの描画処理がそれぞれ呼び出される
● 同じ型の変数(=ここではEnemyBaseのポインタ)として扱いつつ、異なる挙動をさせることが出来る! ヾ( ノシ*°ヮ。)ノシ

16とじか:2014/03/22(土) 02:50:19 ID:yv/t42sg0
最後にプログラミングの勉強に関してですが、とじかさんの場合は、
ここ ttp://www.geocities.jp/ky_webid/index_old.html と
ここ ttp://www.cppll.jp/cppreference/ と
時々ここ ttp://homepage2.nifty.com/well/Index.html とか
を色々眺めて「C++では何が出来るのか」を覚えつつ、実際の使い方はトライアンドエラーで色々試してちょっとずつ覚えていったような記憶があります
仮想関数の話も ttp://www.geocities.jp/ky_webid/cpp/language/009.html ここらへんにあるので参考にしてみてください

わたし自身は、ゲーム制作者としては5年目くらいなんですけど、
最初の頃(r-wizとか作ってた頃)はクラスどころか for の使い方すら知らなくて、全部 if と while で書いてたりしましたね……
思えば遠くへ来たものです _( _*°ヮ。)_

17KeV:2014/03/22(土) 10:38:12 ID:FuH09Noo0
C++のSTLとかWinAPIなら
ttp://cplusplus.com と
ttp://msdn.microsoft.com も
いいサイトだと思う

18あっちの186:2014/03/28(金) 08:46:40 ID:rwUthjsU0
質問ばかりしてたらアレなので簡単なゲームを作ってみてから、色々意見を頂こうと思ったのですが、全然完成する兆しもなくレスのお礼が遅れてしまうので制作は後回しにして...


参考にしてるソースを真似してvirtualは使ってみたけど...初心者にはまだまだ早かったです。

仕組みは基本クラス作って空のメンバ関数作って、同じ名前の関数を各クラスに作って、必要な時にみんなで使おう!って感じで理解したつもりなのですが...
まず汚ても1個ゲームを完成させてから勉強することにします。

みなさんが勉強してるのは、やはりc++の基礎なんですね。参考書や予備校本ばかり読みあさっても最終的に行き着くのは基本書で基礎固めが大事なんですね。

自分の場合はゲームのプログラムを書く作法や組立の順番がわからないもんですから、やはりセガの人の本とか買って、組んでは壊して弄って直してまた組んでとやっていた方がいいんでしょうか?
参考にしてるソースを見てるとシングルトンやらstateやらデザインパターンにまで目が行ってしまって未熟者の先走りのドツボにハマりそうで...

前に貼ったURLのサンプルのリンクが切れてますね。2月の時は大丈夫だったのですが...

あと、そこのサンプルがvc2008を使えばコンパイルできました。
バージョンごとに書き方って全然変わってくるんですね。

19あっちの186:2014/03/28(金) 09:47:27 ID:rwUthjsU0
あと、visualに関してはポインタ!
ポインタの使い方は

int *p *は悪魔の操り人形でそれを持ってるp。
p=&a *が&に変身してaに忍び寄る
*p= aの魂を取り込んだ*を持ったpがaを自由に操れる

って感じで覚えたので->はイメージできない...
遠くにいるnew(?)された奴が念力でメンバ関数を動かす能力者ってイメージでやってみたが

サンプルをみてると
DrawGraph(px,py,->Handle[ChrNum],1);
が出てきた時点、どこまで念力がつかえるんだ!?って感じで思考崩壊しました。

20あっちの186:2014/03/28(金) 10:49:15 ID:rwUthjsU0
まっ間違えた
DrawGraph(px,py,Game->Handle[ChrNum],1)でした。

Gameってやつはきっとこの世界のすべてを念力で操れる支配者なんだろうなぁー

とじか先生のパーツアクションツールなんですが、これの仕組みについてスゴイ知りたいです。

歩くアニメが四コマある場合に
パーツ(回転軸座標x,y,角度)
classアニメ{
void 歩く(
一コマ目
頭(10,20,30)
腕(10,50,10)
二コマ目
頭(15,20,10)
腕(10,45,15)
三コマ目
...)
}

みたいに一個一個コードに定義していくんでしょうか?
もう、これが昔から気になって仕方がなかったです。

21とじか:2014/03/28(金) 22:26:01 ID:EJOHTz3c0
うーん、プログラムの訓練は、やっぱり何はなくともひとまず書いてみるのが一番なんじゃないでしょうかー
何が難しいのかすら分からない状態でいきなり参考書で正解を読んだところでそれが身につくかというと中々難しい気がしますし、
まずは書いてみて、「こういう処理はどう書けばいいんだろう?」っていう疑問を洗い出していくのが手っ取り早いんじゃないかなーと思います
一度悩んだ場所なら、正解が分かった時に「アレはこうすればよかったんだ!」みたいな感じで知識として定着しやすい気もしますし _( _*°ヮ。)_

あと個人的には、シングルトンとかも同じで、
まず最初に「こういう処理をうまく記述する方法は無いのかなー」っていう所からスタートするべきだと思っていて、
それを「こういう技術があるよ(どう役に立つかは知らないけど」という所から始まっちゃうと、やはりドツボにハマっていく気はしますね……
まずは自力で頑張ってみて、今の知識・技術で難しい部分が出てきた時点で、
それを解決できるようなものを書籍で勉強するなり人に訊くなりするのが良いんじゃないかなーと思います ヾ( ノシ*°ヮ。)ノシ

作法とかも、「常に守った方が良いもの」と「集団で書く時だけ守るべきで、それ以外は自分ルールでも良いもの」とがあって、
前者に関しては書いてるうちに自然に身に付いてくるものだと思いますし、後者は少なくとも今は覚える必要は無いので、
とりあえずは好きに書けばいいんじゃないかと思います
そうして書いたものを人に見てもらって「ここはこう書いた方が良いよ」みたいなアドバイスを貰っていく感じにすると効率よく上達できるんじゃないでしょうかー

22とじか:2014/03/28(金) 22:26:39 ID:EJOHTz3c0
ポインタは、やはり定石通り、「変数の住所」として理解するのが良いんじゃないかなーと思います
int *p; // int型変数の住所を格納する変数p
p = &a; // p に a の住所を格納する
*p = 5; // p が指す住所にある変数 (=a) に 5 を代入する

"->" は、ポインタの参照先のメソッドやメンバー変数を呼び出すための演算子ですねー
class ClassA { void func(); };
ClassA a;
ClassA *p = &a;
a.func(); // a のメソッド func を呼び出す
p->func(); // p が指す住所にある変数(=a)のメソッド func を呼び出す
(*p).func(); // p が指す住所にある変数(=a)のメソッド func を呼び出す

ここらへんの説明も、先日紹介したサイトで色々解説されてるので、読んでみると良いと思います ヾ( ノシ*°ヮ。)ノシ

23とじか:2014/03/28(金) 22:27:57 ID:EJOHTz3c0
えーと、RRのパーツアニメーションは、外部ファイルで管理してますねー
各モーションの情報を表すファイルを作っておいて、それらをゲーム開始時に FileRead 系の関数で読み込むということをしています
なので、モーションの内容を直接コード上に書いているわけでは無いですね

ついでに言うとRRでは、モーションに限らずステージやカードの情報なども外部ファイルとして読み込む形にしています
小規模なゲームではあまり関係が無いですが、大規模なゲームを作ろうとした時には
・コンパイルし直さなくてもデータの変更が可能
・データを別のエディタ等から編集することが可能になる
などの恩恵がかなり大きく効いてくるので、外部化しておくと後々楽になる事が多いですね _( _*°ヮ。)_

24名無しさん:2014/03/29(土) 00:02:21 ID:1mSw6raI0
>DrawGraph(px,py,->Handle[ChrNum],1);
>が出てきた時点、どこまで念力がつかえるんだ!?って感じで思考崩壊しました。
これはただ引数に関数使えることを知らないだけなのでは?

関数には返し値がある事は分かってるよね?
int func(int x){
return x+1;
}
例えばこの関数を使えばint型のx+1が返ってくる
で、この関数は以下のような使い方が可能

int a = func(func(0));
まずfunc(0)が計算され1が返ってくる
つまり外側はfunc(1)と同じ意味になる
最終的に変数aには2が入る

25あっちの186:2014/03/29(土) 12:45:53 ID:FrT72ldA0
どうも憧れにしてるゲームのプログラマーさん達がいっぱい居るもんで、舞い上がって今の力量に合わないような質問ばかりしてしまったようで...

調べてみれば調べてるほどテキストに載ってるような基礎固めがまだまだ足りないようで...
お恥ずかしい限りでございます...

紹介してくださったサイトの基礎の方からちゃんと身につけながら並行してゲーム制作とインとアウトをやっていこうと思います。

わからない事があれば、実際に目の当たりにしてる問題点のついて質問させて頂きます〜。

ここがこれからゲーム制作を始める人がもっと増えて有益な情報交換の場になるようになるといいですね〜

26名無しさん:2014/05/02(金) 01:14:23 ID:X5YAi/1Q0
C#に関しての質問です!
System.Windows.Forms.TabControlのタブ幅の最小値のいじり方を教えていただけませんでしょうか…?

27とじか:2014/05/07(水) 22:45:04 ID:/aG3K.U60
>>26
C#のWindowsAPIに関してはよく知らないのですが、
さっきググったところ MinimumSize から設定できるみたいですよ?

詳しくは
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.tabcontrol(v=vs.110).aspx
ここを見ると良いと思います _( _*°ヮ。)_

28名無しさん:2014/05/09(金) 20:20:01 ID:S4OkYvIQ0
>>27
ありがとうございます!
リンク先を参考にしてMinimumSizeあたりをいろいろいじってみましたが、
なんだかTabPagesのTextの文字数が極端に少ないときにまだ縮みきってくれませんねー…

あまり気にしないようにして、なるべく早めにゲームを公開できるように頑張ります!

29名無しさん:2014/10/15(水) 14:43:03 ID:zUlOurT.0
FLASHのアクションスクリプトの質問もよろしいでしょうか

30名無しさん:2014/10/16(木) 17:50:28 ID:UhX8YzNk0
難しいものは分からないけど簡単なものなら答えられます!

31名無しさん:2014/11/20(木) 14:53:44 ID:kTlVl4TI0
HPゲージが減る演出がよくわからない

32名無しさん:2014/12/03(水) 00:05:09 ID:EK9hU.gg0
どういう意味でわからないのかがわからないけど
HPゼロ状態の枠画像と
満タンのバー画像を用意して重ねて描画させ
HPの割合に応じて満タン画像の描画割合を変えればいいのではなかろうか
にゅーっと動かしたいなら毎フレームに即反映するんじゃなくて
目標のゲージ位置になるまで-1を繰り返すとかでいいんじゃないだろうか

33名無しさん:2014/12/18(木) 21:07:38 ID:oFduygOA0
毎フレーム処理されるif文って多すぎると動作が重くなるかな?
なんか最近作ってるやつがいきなり動作が重くなった、原因がそれぐらいしか思いつかなくて

34名無しさん:2014/12/18(木) 22:41:22 ID:tZX5wiNw0
if文の条件に重い関数が入っていればその関数のせいで重くなるけれど
普通に使う分にはif文では重くならないと思う
それよりも描画周りの処理等を見た方がいいかもしれません

とりあえず怪しい部分をコメントアウトしながら探してみるといいと思います

35名無しさん:2014/12/18(木) 22:53:54 ID:oFduygOA0
返答ありがとうございます
今ざっと確認したところ
高速で画面をスクロールさせているのと透過処理をプログラム内でやっているのは重くなる原因になりそうですね
いろいろ見直して最適化してみます

36名無しさん:2015/02/25(水) 14:59:38 ID:1tApYAmg0
フラッシュのパブリッシュでクラッシュするようになってしまいました
エラーも吐かずに突然フラッシュのソフトが落ちてしまいます
ゲームのキャラの新しいモーションを作ってプレビューを見てみようと思ったらこの症状が発生しました
新規モーション部分を消したら治るのですが原因が全くわかりません
キーフレームアクション内で重篤なエラーが起こることはあるのですか?

37名無しさん:2015/03/31(火) 18:16:57 ID:jDDK2Yxo0
>>36
ごめんフラッシュは分からないがageてみたらどうか

38ZNZN ◆ZNZNFU/0Oo:2015/04/01(水) 01:30:58 ID:4KYMnjq.0
いつの間にかフラッシュの質問がきてたですって!やはりageないと見つからないですね;

それだけの情報だとちょっと原因は分かりませんがムービークリップが無限ループ構造になってるとかあるかもです
あとActionScriptは2.0ですか?3.0ですか?
3.0設定だとタイムラインの移動などでステージ上から消えたムービークリップも
見えないだけで残ってることがあるみたいなのでそれ関係かも…?
その問題が発生するflaファイルを用意していただければなにか分かるかもしれません

39名無しさん:2015/04/08(水) 15:35:47 ID:.DdBRcD20
お返事ありがとうございます
問題の箇所は大きなサイズのshape属性のレイヤーを短いフレーム(1コマごとに)で
離れたところに動かしていた部分を削除したら解決しました
原因は不明です
他のオブジェクトでshapeレイヤーを少ないコマ数で大きく動かしてもフリーズは発生しませんでした
shapeレイヤーの数は8でしたが一気に動かすと描画バグが発生することがあるのでしょうか
次はageて質問します
対応ありがとうございました

40ZNZN ◆ZNZNFU/0Oo:2015/04/09(木) 06:19:17 ID:amY2yaTU0
再現性がないのです…?ちょっとそれは分かりませんね…でも解決したならよかったです
シェイプをコマアニメさせたってことだと思いますがそれでエラー吐いた経験はないですね…

41名無しさん:2016/01/07(木) 02:28:06 ID:epjNaMnE0
gamemakerで逃げゲーを作っています
敵が追いかけてくるプログラムを

自キャラ、敵キャラの座標を常に各変数に出力

敵の移動はx軸→y軸の順に自キャラ座標へ近づけるように数値を増減させて移動

という単純な構造でやってました
そして真四角のステージでテストしてたので稼働用にステージ内に障害物になるオブジェクトを配置してテストしたら
壁に引っかかって超ヌルゲーになってしまいました
迂回するようにはできないでしょうか
いろいろ考えたのですがプログラム初心者で思いつかず困っています

42名無しさん:2016/01/07(木) 07:40:10 ID:OlhI5iE.0
pathをつかってはどうだろうか

43名無しさん:2016/01/08(金) 00:16:50 ID:XDnOcf/g0
ttp://gmc.yoyogames.com/index.php?showtopic=409282
追っかけ系だと、この辺とかフォーラムとexampleやらスクリプト漁って動作みるのもよさそうです
path finding ai とかそんなの

44名無しさん:2016/01/10(日) 16:35:35 ID:cCIN72wk0
経路探索 ゲームプログラミング
でググって勉強しよう

45名無しさん:2016/01/11(月) 01:30:39 ID:v2O9Jyt60
経路探索自前でやんなくてもGamemakerはpathで勝手にやってくれるよ

46シアノ:2016/03/28(月) 22:01:04 ID:MJ9ap9oI0
「アシュタロテ!」のJavaソースコードを公開してみました。
まだ作成途中のため、いい加減なところが多くて恐縮ですが……
ttp://u3.getuploader.com/ryona/download/863/Ashtarote_src_ver.0.1.0.zip

どなたかの参考になれば幸いです。
明らかにおかしい箇所は指摘いただけると更に幸いです。
(Javaクライアントアプリの経験がないので、UI系の処理はあやしい……)

47※焼却されました※:※焼却されました※
※焼却されました※

48名無しさん:2016/04/28(木) 09:22:04 ID:K9UKhG5U0
>>46見てオブジェクト指向って難しいと思った。
手続き型(だっけ?)のCみたいなやつしかやったことない。

49シアノ:2016/04/29(金) 02:04:58 ID:rRfPpv0g0
>>48
そもそも説明が少なすぎて申し訳ないです。
ただ、難しい印象を与えるのは目的に反するので、少し補足を。

主要な要素(クラス)にだけ注目すると分かりやすくなります。
「コンテナ」「サービス」「ステージ」「スプライト」の4種類です。

このうち「コンテナ」と「サービス」は
「ゲーム機」と「ゲームソフト」の関係を意識しています。
AshtaroteService.javaの161行目は「ゲーム機(CellaContainer)」に
「ゲームソフト(AshtaroteService)」を入れて電源オンです。

また、ゲームソフトの規格にあたるのが「CellaService」です。
「AshtaroteService」は「CellaService」に沿って実装してあり、
ゲーム実行中は必要なタイミングで「CellaContainer」から処理が呼ばれます。

逆に「CellaContainer」は「CellaService」に沿って呼び出すので、
「CellaService」に沿う実装ならば「アシュタロテ!」以外も動作する設計です。


「ステージ」と「スプライト」については後日にでも。

50名無しさん:2016/05/01(日) 11:49:39 ID:Qlzq6lWM0
1.位置と何描画するかのデータをまとめられる入れ物をつくっておく
2.各まとまったデータの塊に対して、位置はこことかこの絵を描画するとか決める
3.各データの塊が持ってる情報を元に、その位置に何か描画させる

おわり

ゲーム作るぶんには、Cやったことあるなら、関数ついた構造体、くらいの理解で十分
変に難しく考えすぎて謎の強大なハイパームズカシイ概念だと思ってしまうのが難しい原因
継承だの多態性だのそういうのは最初はいらないし、やってたらそのうちわかる

51シアノ:2016/05/01(日) 22:28:12 ID:GWNblFfE0
ゲームを作るのにオブジェクト指向は不要です。

ただ、ACTなら多態性のメリットが大きい(と個人的に思う)ので、
そこを感じていただけると、採用の余地があるのではないかと。

メリットが感じられない説明なのは私が悪いです……

52名無しさん:2016/05/02(月) 11:51:43 ID:9arOUHdo0
描画するメソッドなんかもキャラクターのクラスに持たせておいた方がいいの?
オブジェクト指向って、より多くのことをクラスに入れて、
メイン関数でやることを少なくするってイメージがある。

DxLib使って、マップの読み込みと、敵との接触判定まで作れた。
ブロックとの接触判定についていくつかサイト見たけど結構面倒なんだな…。
先はかなり長い…。

53シアノ:2016/05/02(月) 23:41:08 ID:AI5wiMxw0
「クラスは1つだけ責任(役割)を負う」という原則があるので、
どこまで単一責任とみなすか次第ですね。

内部処理と描画処理は別の役割なので分離する、
キャラクターに関する役割なのでまとめる、の両方が考えられます。
あとは作りやすさと美学の問題かと。

それとメイン関数の処理を少なくするというより、
メイン関数のクラスも単一責任と考えた方がすっきりすると思います。
(むしろメイン関数という考えは捨てちゃった方が……)

54名無しさん:2016/05/06(金) 09:05:48 ID:x3iEmzfY0
>>53
ありがとう。
色々参考にしながらやってみます。

55シアノ:2016/09/04(日) 23:28:04 ID:tAJXVYgc0
「Queendom of Ants.」のC言語ソースコードも公開します。
ttp://u3.getuploader.com/ryona2/download/440/Queendom_source.zip

基本的に改変・配布は自由です。詳しくは同梱テキストをご覧ください。
結構コメントも頑張ってます。(実行コード:700行、コメント:600行くらい)

ただ、C言語はゲーム製作初心者にはオススメしません。悪しからず。
(プログラミング初学者なら選択肢の一つですが)

56名無しさん:2016/09/07(水) 22:15:59 ID:2aeW7rIg0
本職の人のコードは綺麗だな。
俺のはまず動くのを作るってやってるからぐちゃぐちゃだ。

57シアノ:2016/09/10(土) 10:16:47 ID:Vf1URQg20
「Queendom of Ants.」のCソースコードもv1.01に差し替えました。
ttp://u3.getuploader.com/ryona2/download/441/Queendom_source_v1.01.zip

58名無しさん:2016/09/10(土) 10:30:02 ID:DX.0yasY0
むむ、パスワードいつものじゃないの?

59シアノ:2016/09/10(土) 11:41:54 ID:Vf1URQg20
>>58
すみません、ダウンロードパスワードと編集パスワードを間違えました。
ttp://u3.getuploader.com/ryona2/download/442/Queendom_source_v1.01.zip

60シアノ:2016/12/26(月) 01:07:07 ID:Hw9RCmTk0
「深淵のヘキサグラム」のソースコードも公開しました。
ttp://u3.getuploader.com/ryona2/download/447/Hexagram_source_v1.00.zip

C++は初めてなので、まずいところを指摘いただけると今後に活かせます。

61シアノ:2017/01/02(月) 11:19:42 ID:.GsfqUCI0
ソースコードも修正版に差し替えます。
ttp://u3.getuploader.com/ryona2/download/449/Hexagram_source_v1.01.zip

限界値分析を怠るな、という教訓を得ました……

62シアノ:2017/10/01(日) 16:26:24 ID:xwI8rQeE0
「深淵のヘキサグラム」「Queendom of Ants.」について
更新後のソースコードも公開しました。

ttps://ux.getuploader.com/cyano_source/

63名無しさん:2017/10/09(月) 01:06:19 ID:BrUpqCDM0
Godot Engine使ってる人いる?
最近手を出してみたんだけど、nodeによる設計がかなり分かりやすくて気に入った
個人的にGameMakerより使いやすいと思う

64シアノ:2018/01/16(火) 22:13:50 ID:gpdP/2ow0
「QUICK DRAW GIRL」のソースコードを公開しました。

ttps://ux.getuploader.com/cyano_source/3

改変・配布等は自由にしていただいてかまいません。

65シアノ:2018/01/17(水) 22:37:57 ID:Y6uf2bjo0
すみません、URLを間違えていました。

ttps://ux.getuploader.com/cyano_source/download/3


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板