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


新着レスの表示


名前: E-mail(省略可)

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

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

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

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