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

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

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

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

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

などなど

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 で書いてたりしましたね……
思えば遠くへ来たものです _( _*°ヮ。)_

17 KeV :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てみたらどうか

38 ZNZN ◆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て質問します
対応ありがとうございました

40 ZNZN ◆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(省略可)

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



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