タグ付けされた質問 「java」

Javaは人気のあるオブジェクト指向プログラミング言語であり、ほとんどのハードウェアおよびソフトウェアプラットフォームでJavaプログラムを変更せずに実行できるランタイム環境です。

4
JavaおよびSteam JVMのデプロイメント
私は現在、ゲーム開発とSteam Greenlightへの展開のオプションを検討しています。特にlibGDXでJavaが好きで、特にクロスプラットフォームのAndroidの可能性があるので、SteamにJavaゲームをデプロイできることを理解しています。私のJavaゲームがC ++ Steamworks APIを呼び出すことができるように、ある種のラッパーを作成する必要があることにもとても満足しています。 私の質問は、私が遭遇する可能性のあるデプロイメントの問題についてです。具体的には、JREのクライアントマシンのインストール。多くのSteamインストーラーが.NETランタイムをチェックするのを見てきました。JREについても同様のチェックとインストールを行う必要がありますか? Monogameを使用したC#のようなものと比較して、SteamでのJavaのデプロイがデプロイと保守の悪夢になるという明白な理由はありますか?
10 java  libgdx  steam 

1
BitmapFont-新しい1.6 libGDXのgetBoundsメソッドの場所
最新のlibgdxバージョン1.6をダウンロードしましたが、BitmapFontテキストの中央にある問題を解決できません。バージョン1.54の以前のバージョンでは、getBounds()メソッドを使用してテキストの幅を調べていました。 ソリューションを共有してください
10 java  libgdx 

4
Box2Dで近接武器を作成する(libGDX)
キーが押されたときにスイングできる近接武器の実装方法に苦労しています。 2つの異なる攻撃(スタブとスイング)を想像しています 2つのフィクスチャー(キャラクター+武器)、2つの異なるボディ、2つの異なるボディ+回転ジョイントを作成しようとしましたが、想像したとおりに動作するようにコーディングすることはできません。 刺す: したがって、ボタンを押すと、ボディ/フィクスチャー(センサー)が約1秒間表示されてから消えます(または、ボディ/フィクスチャーは常にヒーロー上にあり、押すと頂点を中心に90度回転するだけで、その後、回転して通常に戻します) スイング: 同じことですが、今度は武器が上から始まり、下にスイングします。武器もセンサーになります。 私が試したこと: 2つの動的ボディを作成しました。 武器はヒーローに従う必要があるので、私は回転ジョイントを使用してそれらをまとめました。キーを押すと、武器の角速度を数値に設定します。ただし、キーを離しても武器は回転し続けます。ifチェックを実装してみました(角度が___より大きい場合は、角速度をゼロに設定します)。ただし、これは、もう一度キーを押すと、武器が回転を停止することを意味します。
10 java  libgdx  box2d 

2
Table.drawDebugはlibGDXでは非推奨であるため、代わりに何を使用する必要がありますか?
私は「Learning LibGDX Game Development」の本に従ってシンプルなゲームを作成しています。私は、ステージを作成してデバッグ境界線でレンダリングするメニュー作成セクションにいます。 本は使用するように言っていますTable.drawDebug(stage)が、この静的メソッドはフレームワークTableクラスから完全に削除されたようです。 インポートしていcom.badlogic.gdx.scenes.scene2d.ui.Tableます。以下は私のコードです: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最後の行にTable.drawDebug(stage);はコンパイルエラーがあります"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the …

2
フォントサイズをlibgdxの画面解像度に一致させる問題
ゲームのテキストを同じサイズで別の画面に表示するのに問題があり、簡単なテストを行いました。 このテストは、画面にテキストフィッティングを表示することで構成されています。画面やDPIから独立して、テキストのサイズが同じである必要があります。 私はこれとこの答えを見つけましたが、私の問題は解決するはずですが、解決しません。デスクトップではサイズは大丈夫ですが、私の電話では大きすぎます。 これは私のNexus 4での結果です(768x1280、2.0密度) そして、これは私のMacBookの結果です:(480x800、0.6875密度) Open Sans Condensedを使用しています(Googleフォントへのリンク) ご覧のとおり、デスクトップは見栄えが良いですが、電話ではとても大きいです。 ここに私のテストのコード: public class TextTest extends ApplicationAdapter { private static final String TAG = TextTest.class.getName(); private static final String TEXT = "Tap the screen to start"; private OrthographicCamera camera; private Viewport viewport; private SpriteBatch batch; private BitmapFont font; @Override public void …

2
ヘビの尻尾を頭に追従させるにはどうすればよいですか?
割り当てに従って、小さなSnakeクローンを作成することでlibGDXを使い始めたところ、おそらくしばらくの間恥ずかしい問題に遭遇しました。 現在、ヘビの頭(この段階では単純な長方形)がゲームのキャンバスの周りを移動しています。ヘビの残りの部分を構築する最も簡単な方法は、頭に、プレーヤーの動作に応じてサイズが増減するSnakeElementsのJavaコレクションLinkedListを所有させることでした。 SnakeElementsのこのリストを頭につけることは簡単ではありません。 これを行う現在の関数は次のとおりで、ヘッドがその位置を更新するたびに呼び出されます。 private void moveTail (float x, float y, int direction) { float tmpx, tmpy; int tmpdirection; int offset_x, offset_y; for (SnakeSegment snse : tail) { offset_x = 0; offset_y = 0; tmpx = snse.getX(); tmpy = snse.getY(); tmpdirection = snse.getDirection(); switch(direction) { case 0: offset_x = 0; …
10 java  libgdx 

2
libgdxで手続き的に生成されたタイルを実装するにはどうすればよいですか?
私はlibgdxでシンプルなトップダウンのゼルダ風ゲームを作成しています。これと同様に、手続き的に生成されるタイルベースのダンジョンを実装したいと思います。 LibgdxにはTiledMapと呼ばれるクラスがありますが、これは私のニーズに合うようですが、公式ドキュメント以外のドキュメントでは、TiledMapsは.tmxファイル、つまり事前に設計されたマップと組み合わせてのみ使用できることを示唆しています。私はかなりの量のグーグルを実行して無駄に終わったので、動的に生成されたタイルマップにlibgdxを使用した経験がある人がいることを願って、最後の手段としてここに尋ねます。 編集:上記にリンクしたチュートリアルと組み合わせてStaticTiledMapTilesを使用して目標を達成できますか? ありがとう!

2
3Dボクセルベースの部屋が効率的に密閉されているかどうかを判断する方法
ボクセルベースの3Dルームで大きな部屋が密閉されているかどうかを効率的に判断する際に、いくつか問題がありました。私は助けを求めずに問題を解決するために全力を尽くしましたが、あきらめるのに十分なほど試みなかったので、助けを求めています。 明確にするために、部屋に穴が開いていないことを密封しています。部屋が密閉されているかどうかを確認する酸素シーラーと、酸素入力レベルに応じて密閉する酸素シーラーがあります。 今、これが私がやっている方法です: シーラータイルの上のブロックから始まり(ベントはシーラーの上面にあります)、6つの隣接する方向すべてに再帰的にループします 隣接するタイルが完全な非真空タイルである場合は、ループを続行します 隣接するタイルがいっぱいではない場合、またはバキュームタイルである場合、隣接するブロックが再帰的に満たされているかどうかを確認します。 タイルがチェックされるたびに、カウンターをデクリメントします カウントが0に達した場合、最後のブロックがバキュームタイルに隣接している場合は、領域がシールされていないことを返します カウントがゼロになり、最後のブロックがバキュームタイルではない場合、またはカウンターがゼロになる前に再帰ループが終了する(バキュームタイルが残っていない)場合、領域はシールされます。 エリアがシールされていない場合は、いくつかの変更を加えてループを再度実行します。 真空タイルの代わりに「通気性のある」タイルの隣接ブロックをチェックする 減少するカウンターを使用する代わりに、隣接する「通気性のある」タイルが見つからなくなるまで続けます。 ループが終了したら、チェックされた各ブロックをバキュームタイルに設定します。 これが私が使用しているコードです:http : //pastebin.com/NimyKncC 問題: 私は3秒ごとにこのチェックを実行しています。シーラーは数百のブロックをループする必要がある場合があり、酸素シーラーが多い大きな世界では、数秒ごとにこれらの複数の再帰ループがCPUで非常に困難になる場合があります。 最適化の経験が豊富な方が私に手を貸してくれないか、少なくとも私を正しい方向に向けられるかどうか疑問に思っていました。本当にありがとう。
10 java  voxels  recursion 

2
Java 2Dゲームプログラミング:ゲームループを作るためのさまざまなアプローチ
私はJavaゲームプログラミングに不慣れですが、ゲームループを作成するためのいくつかの異なるアプローチを見てきたので、読むほど、混乱します。1. Timerクラスを使用する標準的なアプローチ(少ないようです)正確)。2. System.nanoTimeを使用するより正確なアプローチ。3. scheduleAtFixedRateを使用する単純なアプローチ。 一般的にどちらを優先する必要があり、各アプローチの利点と欠点はどこにありますか?事前に情報をありがとうございました。

2
Androidで関数型言語はどの程度うまく機能しますか?
これは、私が特に適切だと思うこの質問の特別なケースです。 私はAndroid用のゲームに取り組んでおり、libgdxでScalaを使用することを計画しています。私はパフォーマンスの高いゲームを作るつもりですが、必ずしも高性能なゲームではありません。libgdxのガベージコレクションに関するドキュメントを見たところ、次のように思いました。 関数型プログラミングは、多くの不変オブジェクトを意味します。 したがって、オブジェクトを変更するには、新しいオブジェクトを作成する必要があります。 したがって、多くのオブジェクトがガベージコレクションされ、パフォーマンスが低下します。 これは乗り越えられない問題ですか?Androidの機能的なスタイルで他に重大な問題はありますか?
10 java  android  libgdx 

2
ゲーム「Do n't Starve」のように、2.5Dパースペクティブで地形をレンダリングするにはどうすればよいですか?
Terrariaなどの2Dサイドスクローラーゲームを作成した経験がありますが、自分自身に挑戦して、2.5Dの視点を持つゲームを作成したいと考えています。私が模倣しようとしているゲームは、Do n't Starveです。現在、私の焦点は、地面をレンダリングする方法を理解することです。彼らがどのように地面を生成し、それをレンダリングしたかを理解するのに苦労しています。彼らが地面をレンダリングしたと思う方法は、最初にいくつかのペイントプログラムで地面をペイントし、次にその平面イメージを何らかの方法で操作して、奥行きがあるように見せることです。 実際にそのタイプの地形をどのようにレンダリングするかについて、私は完全に混乱しています。地形に次の機能を持たせたい: Do n't Starveの地形のように見える、これはDo n't Starve の地形を示すビデオです 地形は平坦になり、カメラの角度と視点は固定されます ヒントやヒントをいただければ幸いです。よろしくお願いします。 (私は軽量Javaゲームライブラリ(LWJGL)を使用してJavaで作業しています。)

3
ゲーム理論とゲーム開発の間には何か関係がありますか?
私はJavaプログラマーであり、Javaでゲームを学ぶことに興味があります。最近、Wayne L.Winstonが書いたOperations Researchの本を見ました。ゲーム理論についてのトピックがあります。 それは本当に数学的です。私は単なるアプリ開発者ですが、その本はゲームのキャリアを始めるのに役立ちますか?
10 java  game-theory 

2
ブレイクアウト衝突:衝突の側面の検出
私はブレイクアウトクローン(私の最初のゲーム)を書いていて、レンガのどちら側がヒットしたかを理解する方法について完全に行き詰まっています。 私はこのような衝突検出方法を持っています: DetectCollision(Object a, Object b) x = distance(a.x, b.x); y = distance(a.y, b.y); if (x is smaller than the combined width & y is smaller is than combined height { return true; } return false; これはまったく問題なく動作しますが、適切に応答するためには、衝突の側面と、中心からの相対的な位置を知る必要があります。 私は過去数日間を振り回して過ごしましたが、道に迷っています。

2
手足を切り取ってレンダリングするキャラクター(Java / OpenGLのブレンダーモデル)
取り外し可能な四肢を持つことができるようにしたい場合、キャラクターアニメーションとレンダリングクラスを作成する際にどのような点を考慮する必要がありますか?私は神経系に至るまですべてを定義できる詳細な身体システムを開発しました。ドワーフフォートレスに見られるダメージの詳細レベルに似たものを目指しています。たとえば、キャラクターが上腕を損傷すると、腕全体を無効にする神経損傷の可能性があります。または、腕を完全に失う可能性があります。 このデータ部分を処理するためにシステムを作成しました。各キャラクターには、付属物と内部パーツを持つトランクがあります。各付属肢は、子付属肢と内部パーツを持つこともできます。親の付属肢が無効化/削除されている場合、子の付属肢は無効化/削除されます。無効化/削除された付属物または内部部品のいずれかが一生必要な場合、キャラクターはすぐに死亡します。 私が現在取り組んでいるのは、この描画/アニメーション部分です。アニメーションを定義して、現在の身体の状態(腕や脚がないなど)を考慮して、許可されているアニメーションを知るにはどうすればよいですか?足りない手足を描画しないように描画システムを設定するにはどうすればよいですか?各四肢/付属物は独自のモデルである必要がありますか(切断された付属物を地面に描きたい)。 移行元のシンプルなシステム(テスト用に作成したもの)は、アニメーションのすべてのキーフレームを完全なモデルとしてVBOにインポートします(キーフレームが開始/停止する場所の頂点カウントとともに)。Blenderで定義されたボーンをインポートしたり利用したりせず、フレーム間を補間しません。 これはかなり大きな質問である可能性が高いため、目的の場所にたどり着くためのリソースも探しています。 編集 必要な手足がない場合に代替アニメーションを実行するように設定したいので、アニメーションしている手足を知っているアニメーションについて質問します。それを考えた上で、アニメーションを起動する前にそのチェックを行い、その時に適切なアニメーションを起動することを想像します。

2
すべてのタイルをループしたりスキップしたりせずに、線が交差しているタイルを見つける
私はこの問題を数日間見つめてきました。問題を視覚化するのに役立つように、このグラフィックを作りました:( グラフから、線が[1、1]、[1、2]、[2、2]、[2、3]と交差し、[で終わることがわかります3,3]) ラインに沿って各グリッドスペースに進み、グリッドスペースのマテリアルが固体であるかどうかを確認したいと思います。関係する数学はすでに知っているように感じますが、まだまとめることはできていません。私はこれを使用して視線をテストし、パスファインディングアルゴリズムを介してパスが見つかった後にノードを排除します-エージェントは固体ブロックを通過できないため、ブロックを通過できず、ノードがパスから排除されません。コーナーをナビゲートするために必要です。 そのため、交差する各グリッドスペースまでラインに沿って進むアルゴリズムが必要です。何か案は? 私は、Bresenhamのような多くの一般的なアルゴリズムと、線に沿って事前定義された間隔でステップを実行するアルゴリズムを調べました(残念ながら、このメソッドは、タイルがステップサイズよりも小さいウェッジと交差している場合、タイルをスキップします)。 ホワイトボードに大量のfloor()関数とceil()関数を実装していますが、複雑すぎて、速度低下の原因となる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.