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

プログラミングの一種で、多くの場合、「従来の」プログラミングよりも学習が容易です。スクリプトは、パフォーマンスが使いやすさほど重要でない場合によく使用されます。スクリプト言語の例は、Javascript、Lua、Perl、Python、およびPHPです。スクリプト言語はコンパイルされる代わりに解釈されることが多いため、マシンコードを生成せずに直接実行できます。

2
コンポーネントベースのエンティティシステムでのスクリプト化された「ネイティブ」コンポーネントの処理
私は現在、コンポーネントベースのエンティティシステムを実装しようとしています。エンティティは基本的に単なるIDであり、いくつかのコンポーネントを束ねてゲームオブジェクトを形成するヘルパーメソッドです。そのいくつかの目標は次のとおりです。 コンポーネントには状態のみが含まれます(例:位置、ヘルス、弾薬数)=>ロジックは「システム」に入り、これらのコンポーネントとその状態(例:PhysicsSystem、RenderSystemなど)を処理します 純粋なC#とスクリプト(Lua)の両方でコンポーネントとシステムを実装したいと思います。基本的に、C#ソースを再コンパイルすることなく、完全に新しいコンポーネントとシステムをLuaで直接定義できるようにしたいと考えています。 これを効率的に一貫して処理する方法についてのアイデアを探しているので、たとえば、C#コンポーネントやLuaコンポーネントにアクセスするために別の構文を使用する必要はありません。 私の現在のアプローチは、通常のパブリックプロパティを使用してC#コンポーネントを実装することです。おそらく、エディターにデフォルト値などを伝えるいくつかの属性で装飾されています。次に、C#クラス "ScriptComponent"を作成します。これは、Luaテーブルを内部でラップするだけで、このテーブルはスクリプトによって作成され、特定のコンポーネントタイプのすべての状態を保持します。コンパイル時にはわからないので、C#側からはその状態にあまりアクセスしたくないのですが、どのScriptComponentsにどのプロパティを使用できるかはわかりません。それでも、エディターはそれにアクセスする必要がありますが、次のような単純なインターフェースで十分です。 public ScriptComponent : IComponent { public T GetProperty<T>(string propertyName) {..} public void SetProperty<T>(string propertyName, T value) {..} } これは単にLuaテーブルにアクセスし、Luaからこれらのプロパティを設定および取得するだけで、純粋なC#コンポーネントにも簡単に含めることができます(ただし、通常のC#プロパティをリフレクションなどで使用します)。これはエディターでのみ使用され、通常のゲームコードでは使用されないため、ここではパフォーマンスはそれほど重要ではありません。特定のコンポーネントタイプが実際に提供するプロパティを文書化したコンポーネントの説明を生成または手書きする必要がありますが、それは大きな問題ではなく、十分に自動化できます。 しかし、Lua側からコンポーネントにアクセスする方法は?たとえばgetComponentsFromEntity(ENTITY_ID)、「ScriptComponent」を含むネイティブのC#コンポーネントの束をユーザーデータとして取得することになるでしょう。ラップされたLuaテーブルから値GetProperty<T>(..)にアクセスすると、他のC#コンポーネントのようにプロパティに直接アクセスする代わりに、メソッドが呼び出されます。 おそらくgetComponentsFromEntity()、Luaからのみ呼び出される特別なメソッドを記述します。これは、代わりにラップされたテーブルを返す「ScriptComponent」を除いて、すべてのネイティブC#コンポーネントをユーザーデータとして返します。しかし、他のコンポーネント関連のメソッドがあるので、C#コードまたはLuaスクリプトから呼び出されるために、これらのメソッドをすべて複製したくありません。 最終的な目標は、ネイティブコンポーネントとLuaコンポーネントを区別する特別なケース構文なしで、特にLua側から、すべてのタイプのコンポーネントを同じように処理することです。たとえば、次のようなLuaスクリプトを記述できるようにしたいと思います。 entity = getEntity(1); nativeComponent = getComponent(entity, "SomeNativeComponent") scriptComponent = getComponent(entity, "SomeScriptComponent") nativeComponent.NativeProperty = 5 scriptComponent.ScriptedProperty = 3 スクリプトは、実際に取得したコンポーネントの種類を気にする必要はありません。C#側から使用するのと同じメソッドを使用して、コンポーネントを取得、追加、または削除します。 たぶん、そのようなエンティティシステムとスクリプトを統合するいくつかのサンプル実装がありますか?

3
ブレンダーボーンのエクスポート
メッシュに最適なブレンダーモデルのエクスポーターを作成しました。私はそれをブレンダーで定義されたボーンに拡張しようとしています。しかし、骨のデータをエクスポートするための適切な情報が見つかりませんでした。骨データにアクセスするにはどうすればよいですか?ボーンが影響するすべての頂点、各頂点の重み、行列にアクセスしたいと思います。スケルトンアニメーションと動的分離のために他に何かエクスポートする必要がありますか?

5
エンティティ構成をスクリプトの外に配置するのはなぜですか?
スクリプトファイルでエンティティコンポーネントを定義する多くのゲームを見てきましたが、各エンティティを構成し、そのエンティティが持つコンポーネントを指定するとき、他のファイル形式(XMLなど)を使用します。なぜ彼らはそれをするのですか? 私は主に他の人の根拠がこれについて何であったかを確認するように求めています。私はまた、(私はXML JSONを選択しなかったが)外のスクリプトの私のエンティティを設定します。これを行う理由は、セーブゲームを簡単に実装できるようにするためです。また、この種の構成はXMLやJSONのようなものに整理するほうがよいと思うからです。 @ クリストファーラーセンの答え: コメントとして投稿するには長すぎる 質問の主題から少し逸脱しているのではないかと思います。あなたが説明している問題は、階層ベースのエンティティにより関連しています。私の質問では、コンポーネントベースのエンティティについて話していることを述べました。 これが私が聞きたかった例です。以下は、エンティティを構成する2つの代替方法です。スクリプトを使用する方法と外部JSONファイルを使用する方法です。私の質問は、なぜ多くの人がスクリプトの外でエンティティを構成することを好むのかということでした。 基本エンティティクラス: class Entity: def __init__(self, name): pass def addComponent(self, comp): pass スクリプトのアプローチ: orc = Entity('Orc') orc.addComponent(PositionComponent(3.4, 7.9)) JSONアプローチ: { "name" : "Orc", "components": { "PositionComponent": { "x" : 3.4, "y" : 7.9 } } } このアプローチを使用する理由は既に述べましたが、これは技術的で組織的なものです。なぜこれほど多くの他の人(私が見たものから)がこれを使用するのか知りたいと思いました。

4
Luaエンティティの作成/管理に優れたゲームエンジン[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 Luaまたは他のスクリプト言語を使用してエンティティを構築するエンジンを探しています。これは、インスピレーションを見つけて自分のエンジンでも行うためです。 CryEngineはエンティティを作成するためにLuaを使用することを知っていますが、他に検索できる代替策があるかどうかを知りたいと思っていました。 ありがとう!

3
スクリプトはエンジンの抽象化と相互作用する必要がありますか?
私はJavaとJythonを使用していますが、いくつかの調査の結果、スクリプトがエンジンインターフェイスに直接アクセスできるようにすると、2つが密接に結びつくため、間違いになる可能性があることがわかりました。 MODがエンティティを作成および管理できるようにするほとんどのスクリプトは、なんらかの抽象化を介して行われているようです。これらの抽象化はこの理由のためにそこにありますか、それとも非プログラマーがゲームを変更するためのより直感的な方法を提供するだけですか?
10 java  python  scripting 

3
スクリプト言語で何を求めていますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 別のプロジェクト用に少し埋め込み言語を書いています。ゲーム開発は本来の目的ではありませんでしたが、うまく適合しているように見え始めており、私はいつかその流れで開発するつもりです。 (バイアスを避けるために)詳細を明らかにせずに、私は知りたいと思っています。 ゲーム開発用のスクリプト言語のどの機能が好きですか? Lua、Python、またはTclやGuileなどの別の埋め込み言語をゲームプロジェクトの主要なスクリプト言語として使用した場合、どの側面が最も有用だと思いましたか? 言語機能(ラムダ、クラス、並列処理) 実装機能(パフォーマンスの最適化、JIT、ハードウェアアクセラレーション) 統合機能(C、C ++、または.NETバインディング) それともまったく違うものですか?
10 scripting  tools 

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

2
XNA / C#プラットフォームのスクリプト言語としてのLuaとPythonの長所と短所は何ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私はゲームの私の古代のアイデアの1つに挑戦することを考えています。このゲームの中核となるのは、ゲーム環境とオブジェクトの機能的なカスタマイズのレベル(宇宙船の武器の動作の変更など)です。このため、ゲームはスクリプト対応である必要があります。また、私はそれを商業化することを目指していません、それは私にとって興味深いプログラミングの挑戦にすぎません。 私は主に.NETの人なので、ゲーム自体にはXNA / C#を使用します。スクリプトについては、PythonまたはLuaを使用することを考えています。私は以前にPythonの経験があり、言語としてそれに対して何もしていません。一方、Luaは私にとってはほぼ完全に新しいものですが、World of Warcraftのアドオンのマイナーな変更がいくつかありますが、それは期待できるようです。だからここに私の質問です: XNA / C#プラットフォームのスクリプト言語としてのLuaとPythonの長所と短所は何ですか? それらの1つはXNA / C#で使用する方がはるかに簡単ですか?XNA / C#と一緒に使用すると、そのうちの1つに特定の利点または欠点がありますか?XNA / C#を他のどれよりも推奨するのはなぜですか?
9 xna  c#  scripting 

2
XNA用のスクリプトエンジン
XNAを使用してC#でこの大きなゲームを作っているとしましょう。 コードベースにスクリプト機能を含めるには、どのようなオプションが必要ですか?
9 xna  c#  scripting 

1
Bohemia Interactiveのbio2sフォーマット
ボヘミアインタラクティブのbio2sスクリプト言語の仕様はありますか?彼らはOperation Flashpoint、Armed Assault(ArmA)、およびVirtual Battlespaceを開発しています。 これらのスクリプトは、O2またはOxygenスクリプトと呼ばれることもあり、テレインおよびモデリングツールで使用されます。酸素はボヘミアインタラクティブのモデリングツールです。 このVBS2チュートリアルとこのArmAフォーラムスレッドでフォーマットの追加の例を見つけました。 編集:bio2s形式の目的を明確にし、例へのリンクをいくつか提供しました。
8 scripting 

3
ECSを使用する場合のユーザーフレンドリーなスクリプト?
私は現在、ゲーム開発に戻るために小さな趣味のプロジェクトを作成しており、ECS(エンティティコンポーネントシステム)を使用してエンティティを構造化することにしました。ECSのこの実装は、次のように構成されています。 エンティティ:私の場合int、コンポーネントのリストへのキーとして使用されるのは一意の識別子です。 コンポーネント:データのみを保持します。たとえば、Positionコンポーネントはxand y座標をMovement保持し、コンポーネントはspeedand direction変数を保持します。 システム:コンポーネントを処理します。たとえば、PositionおよびMovementコンポーネントを取得し、speedおよびdirectionを位置xとy座標に追加します。 これは問題なく動作しますが、今度はゲームにスクリプト言語の形式でスクリプトを実装したいと思います。以前のプロジェクトでは、ゲームオブジェクトのOOP実装を使用しました。つまり、スクリプトは非常に単純明快でした。たとえば、単純なスクリプトは次のようになります。 function start() local future = entity:moveTo(pos1) wait(future) local response = entity:showDialog(dialog1) if wait(response) == 1 then local itemStack = entity:getInventory():removeItemByName("apple", 1) world:getPlayer():getInventory():addItemStack(itemStack) else entity:setBehavior(world:getPlayer(), BEHAVIOR_HOSTILE) end end ただし、ECSを使用する場合、エンティティ自体にはmoveToorのような関数はありませんgetInventory。代わりに、ECSスタイルで記述された上記のスクリプトは次のようになります。 function start() local movement = world:getComponent(MOVEMENT, entity) movement:moveTo(pos1) local position = world:getComponent(POSITION, entity) local future …

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

2
UnityはC#をスクリプト言語としてどのように使用しますか?
私の知る限り、これまでのところ、C#はコンパイルされた言語であり、常にコンパイルされた言語であると思っていました。私は最近Unity3dの研究を始めましたが、APIを介してスクリプトを作成し、ゲームオブジェクトとやり取りするためのオプションとしてC#を提供していることに気付きました(JavaScriptといくつかの他の選択肢とともに)。 これはどのように行われますか?C#は実際に実行されていますか、それとも、抽象化されて、別のスクリプト言語に変換されていますか?この機能については、ある種の解釈が行われているようです。
8 c#  scripting  mono 

1
C#/ XNAゲームでIronPythonコンポーネントと通信するにはどうすればよいですか?
私のXNAゲームはコンポーネント指向であり、位置、物理表現、レンダリングなどのさまざまなコンポーネントがあり、すべて基本Componentクラスを拡張しています。プレーヤーと敵にも、現在C#で定義されているコントローラーがあります。それらをIronPython(Pythonの.NET実装)を介してPythonスクリプトに変換したいと思います。私の問題は、これらのスクリプトの操作方法がわからないことです。 C#アプリケーションへのIronPythonの埋め込みの例は、Pythonスクリプトをコンパイルし、Pythonを介してコントローラーのUpdateメソッドを呼び出すスクリプトコンポーネントのようなものを作成する必要があることを示唆しています。 。 研究で何かが足りないように感じます。そこなければならないスクリプトをロードするための方法であること、(いずれかのC#のPythonスクリプト内または中)Pythonオブジェクトをインスタンス化して、その後、持っている直接私のC#コードでそのPythonオブジェクトへの参照を。 IronPythonオブジェクトを直接操作する方法はありますか、またはラッパーが必要ですか?

2
テランビルディングが燃え尽きて死ぬときを検出するトリガーをどのように記述できますか?(スタークラフト2)
Starcraft 2 Map Editorを使用していますが、トリガーの問題が少し発生しています。 特定のユニットが構造物を殺したときは簡単に検出できます(トリガーユニット==かどうかを簡単に確認します)。クリープがオフのとき)。 これらの2つの状況のいずれかが発生したかどうかを確認するには、「ユニットが死ぬ」トリガーでどの条件を探す必要がありますか? PS:利用できるタグがないため申し訳ありません!

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