Lovetoys (日本語)



Lovetoys は Lua によるゲーム開発用のエンティティ・コンポーネント・システムフレームワーク (Entity Component System Framework = 実体構成要素機構基盤) です。当初は LÖVE 2D ゲームエンジン用に開発されましたが、現在は Lua を採用している全てのゲームと互換性を有しています! それは大雑把に述べると [Richard Lords http://www.richardlord.net/blog/what-is-an-entity-framework] (リチャード・ロード) による ECS の紹介に基づいています。 この構成要素対象の全般の関する概念が理解できない場合は、前述のリンクをクリックして熟読してください。それは非常に価値があります!

Lovetoys はエンティティ、コンポーネントおよびシステムといった心臓部だけをしているわけではなく、完全機能によるゲーム開発用フレームワークですがシーングラフと同様の発行・照会型メッセージ通信システムを搭載しているため、構造化手法により複雑なゲームですら簡単に作成することを可能にしています。

まだ version 1.0 には到達していませんが、ソフトウェアは試験済みであり、多数のゲームで採用されているため明確に安定動作していると言えるでしょう。不具合を発見した場合はレポート (issue) を作成して報告をお願いします。または プル (pull) リクエストを与えてください。 :)


実装に関する簡単な用例です:

-- lovetoys インポート
require("lovetoys/lovetoys")

function love.load()
    engine = Engine()
    world = love.physics.newWorld(0, 9.81*80, true)
    world:setCallbacks(beginContact, endContact)
    eventmanager = EventManager()
end

function love.update(dt)
    -- エンジンの更新関数
    engine:update(dt)
    world:update(dt)
end

function love.draw()
    -- エンジンの描画関数
    engine:draw()
end 

function love.keypressed(key, isrepeat)
    eventmanager:fireEvent(KeyPressed(key, isrepeat))
end

function love.mousepressed(x, y, button)
    eventmanager:fireEvent(MousePressed(x, y, button))
end



入手と試用は Github から。

良い用例および適切な実装方法を参照したい場合はプロジェクトの用例またはゲームを参照してください。

そのほかの言語