• ベストアンサー

【Cか】ノベルゲーム【Javaか】

情報工学科(進学予定)の大学1年生で、専門的なことはまだやっていません。 1年のうちに趣味と学業をかねてプログラムを少しやっておこうと思い、 ビジュアルノベル系のゲームが好き、フォトショップなども使えることから ノベルゲームを1から作ろうと前々から思っていました。 ですが、どの言語にするかきっちり定まらず、結果CとJavaの入門書を終えた段階にいます。 要はどっちつかずな状態です。 ちなみにプログラムのお勉強という意味合いも含め、NScripterなどは使うつもりはありません。 ――初めはCをやっていたのですがCでGUIを扱うにはWin32API?なるものが必要だと知り、そして Javaだと比較的簡単に扱えると知って、Javaをはじめ、 しかし今振り返ってみてCとJava、どちらにするか絞りきれません。 なにかアドバイスいただけたらと思います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.5

ノベルゲームって、シナリオをC/C++やJavaで直接記述する事は少ないと思います。これは、チームでの開発において、シナリオを担当する者がプログラミング言語で記述するのでは手間がかかりすぎてしまうのが理由だと思います。 そこで、いわゆるオーサリングツール(Flashほど高度ではないにしても、そういうもの)を自作したり、スクリプトと呼ばれる比較的簡単な言語(NScripterというのは使った事が無いですが、名前から想像するとそういうものだと思う)で解りやすい形式で記述し、コンパイルしてシナリオデータを作成するわけです。 プログラムはそのデータを読み込んで再生する役割になります。java.exeがバイトコードを実行するのと同じような仕組みを自分で作成します。 そういう手順を踏襲するのであれば、オーサリングレベルではJavaを使い、実行環境はC/C++というのが面白そうです。 力業で絵を表示して文字を表示して音を出すの繰り返しよりも、切り離してしまった方が設計する力が身に付くと思いますし、C/C++とJavaは両方使えた方がいいと思いますので、お勧め出来ます。 個人的にはJavaCC等でコンパイラを作るのが面白そうだと思います。卒論にも使えそうなネタを盛り込んでいくのがいいんじゃないでしょうか。

R-gray
質問者

お礼

なるほど。 確かに将来性?のある面白そうな道ですね。 ありがとうございます!僕にとっては新しい視点です。

その他の回答 (4)

  • rigidbody
  • ベストアンサー率60% (20/33)
回答No.4

>どちらにするか絞りきれません Cが良いと思います。恐らく最も有益だろうからです。裏付け要素として、下記があります。 ・今の主なゲーム開発現場(業務/家庭 用問わず)では、殆どCとC++が使われている ・R-grayさんが就職時も、上記環境はまず変わらないだろう事 尚そこそこCを習得出来たら、後は数学/物理の勉強により注力した方が有益でしょう。具体的には、 【数学】 ・微積分(微分方程式の解法、ラプラス変換等) ・線形代数 ・ベクトル解析 【物理】 ・古典力学 ・水/機械 力学(他の力学も役立つはず) って感じです。私も勉強中ですが...。 どのゲーム会社も欲しがるソフト屋は、「数学や物理に秀で、それをソフトに活かせる人」です。何故なら大変だからです。そしてこの傾向も暫くは変わらないでしょう。 頑張って下さい。

R-gray
質問者

お礼

数学物理はやはり大切なのですね。一応国立理系ということもあり 理数系の勉強は授業はもちろん、それなりに自習もしています。 頑張ります。

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.3

あなたが以下のどれに該当するのかわからないため、アドバイスもそれぞれ違うものになります。その点を踏まえて読んでください。 あなたは、 1.C言語かJavaを習得したい。ゲーム作成は習作という位置づけ。 2a.ゲームを作成したい。ゲームが作成できるならC言語でもJavaでもよい。 2b.ゲームを作成したい。ゲームを作成するのに言語は問わない。 あなたの具体的な回答としては、1か2aが容易に想像できます。 1では、さっさとどちらで行くか決めるべきです。そもそもWin32APIごときで躊躇しているのでは先は長いというべきなのですが。シナリオのブラッシュアップは、プログラムが出来てからでも遅くはない。 2aでは、先にシナリオのブラッシュアップをするべきです。最低限のシナリオ再生プログラムが出来たら、必要な機能が見えてくるはずなので、凝った演出などはそれからでも遅くはないです。 2bでは、2aの回答に加えて、VisualBasicなどのもっとGUIや文字列の取り扱いの楽な言語を選ぶことも選択肢に入ってきます。VisualBasicはWindows専用ではありますが、非常にメジャーな言語です。機種依存しないものとしては、Flashとactionscriptという組み合わせも配布に向いていることから普及してきてます。

R-gray
質問者

お礼

しいて言うなら1でしょうか。躊躇してる暇があったら行った方が 早いですかね。確かにそのとおりです。ありがとうございました。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

単純にいえばCの方が高度な事ができる、といったところでしょうか。 Javaの場合、配布にはあまりむいていないかもしれません。 実行にJavaのランタイムが必要になってしまいます。(あと逆コンパイルされやすいです。) Win32APIというのはOSが提供する機能です。ですから当然機種依存します。 逆にJavaは機種依存させないというポリシーがあるので、 このWin32APIを直接呼び出す事はできません。 ただ経験上いきなりCでゲームを作ろうとしても、なかなか思ったとおりに はかどらないと思います。特にC(Windows)でGUIで組もうとしても HWND?DC?、DIB?GDI?メッセージループ??という事になるでしょう。 そういう点でJavaのアプレットやswingを使った方が簡単には作れます。 #1さんのいわれるように両方やってみれば、それぞれのメリットがわかります。 とりあえず、それぞれの言語を自分なりに比較できるぐらいまでは両方やってみても いいのでは? 単純ですが大雑把に2つの言語を比較すると C言語 OS依存 高度な演出ができる Java Macでも動く(OS非依存) あまり凝った事は出来ない

R-gray
質問者

お礼

レスありがとうございます。 一番気にかかるのがやはりJREがないと動かない、配布に向かない、という コトなんですよね。やはりいきなりCは大変ですか。 もっと要修行ですかね笑。

  • kochory
  • ベストアンサー率45% (167/370)
回答No.1

勉強のためにやってるんだったら両方やりなさい

R-gray
質問者

お礼

すばやいレス、ありがとうございます。 ―――確かに、情報方面へ向かうのなら尚更、C・Javaくらいは両方使えるべきだと思います。 ですが、”最初”というのはとても大事なことだと思うのです。 いずれ両方やるからどっちでもいい、というほど適当ではないと。 今の僕の頭の中は、 ・CやJavaレベルにメジャーな言語で ・ノベルゲームを作りたい ・願わくばそれを他の人にもプレイしていただけるくらいのクォリティにはしたい とかなりわがままな状態で、お勉強であると共にきっちりと作品を作りたいと思っているのです。 故に、一度、きっちりとどちらかに絞りきって片方に集中したいのです。 以上を踏まえ、これからもよろしくお願いいたします。