Difference between revisions of "tiny-ecs (日本語)"
m (Adding keyword.) |
m |
||
(One intermediate revision by the same user not shown) | |||
Line 2: | Line 2: | ||
Tiny-ecs は単純、柔軟、実用的な Lua 用のエンティティ・コンポーネントシステムです。 Lua の自然なタブラー(表)のために、エンティティ・コンポーネントシステムは大規模かつ複雑なシステムの模擬に対しては自然な選択です。 ゲーム・プログラミングにおいて ECS はゲームのループを簡素化するための素晴らしい方法です。エンティティ・コンポーネントシステムに関する詳しい解説は、こちらに[http://en.wikipedia.org/wiki/Entity_component_system 基礎情報]があります: | Tiny-ecs は単純、柔軟、実用的な Lua 用のエンティティ・コンポーネントシステムです。 Lua の自然なタブラー(表)のために、エンティティ・コンポーネントシステムは大規模かつ複雑なシステムの模擬に対しては自然な選択です。 ゲーム・プログラミングにおいて ECS はゲームのループを簡素化するための素晴らしい方法です。エンティティ・コンポーネントシステムに関する詳しい解説は、こちらに[http://en.wikipedia.org/wiki/Entity_component_system 基礎情報]があります: | ||
− | |||
− | |||
− | |||
tiny-ecs はシステムとエンティティに対してメタテーブルを使用しないため Lua のオブジェクト指向プログラミングにて動作します。 この意味はシステムおよびエンティティをサブクラス化することができ、 tiny-ecs にて既存の Lua クラス・フレームワークを使用するため、問題はありません。 | tiny-ecs はシステムとエンティティに対してメタテーブルを使用しないため Lua のオブジェクト指向プログラミングにて動作します。 この意味はシステムおよびエンティティをサブクラス化することができ、 tiny-ecs にて既存の Lua クラス・フレームワークを使用するため、問題はありません。 | ||
− | |||
− | |||
− | |||
用例: | 用例: | ||
Line 35: | Line 29: | ||
end | end | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
[https://raw.githubusercontent.com/bakpakin/tiny-ecs/master/tiny.lua 最新版ソースのコピー・貼り付け] | [https://raw.githubusercontent.com/bakpakin/tiny-ecs/master/tiny.lua 最新版ソースのコピー・貼り付け] | ||
Line 47: | Line 38: | ||
{{#set:LOVE Version=Any}} | {{#set:LOVE Version=Any}} | ||
− | {{#set:Description= Lua 用のエンティティ・コンポーネントシステム}} | + | {{#set:Description=Lua 用のエンティティ・コンポーネントシステム}} |
{{#set:Keyword=Framework}} | {{#set:Keyword=Framework}} | ||
[[Category:Libraries (日本語)]] | [[Category:Libraries (日本語)]] | ||
+ | |||
+ | == そのほかの言語 == | ||
+ | {{i18n (日本語)|tiny-ecs}} |
Latest revision as of 15:45, 15 December 2019
Lua 用のエンティティ・コンポーネントシステム
Tiny-ecs は単純、柔軟、実用的な Lua 用のエンティティ・コンポーネントシステムです。 Lua の自然なタブラー(表)のために、エンティティ・コンポーネントシステムは大規模かつ複雑なシステムの模擬に対しては自然な選択です。 ゲーム・プログラミングにおいて ECS はゲームのループを簡素化するための素晴らしい方法です。エンティティ・コンポーネントシステムに関する詳しい解説は、こちらに基礎情報があります:
tiny-ecs はシステムとエンティティに対してメタテーブルを使用しないため Lua のオブジェクト指向プログラミングにて動作します。 この意味はシステムおよびエンティティをサブクラス化することができ、 tiny-ecs にて既存の Lua クラス・フレームワークを使用するため、問題はありません。
用例:
local tiny = require("tiny")
local talkingSystem = tiny.processingSystem()
talkingSystem.filter = tiny.requireAll("name", "mass", "phrase")
function talkingSystem:process(e, dt)
e.mass = e.mass + dt * 3
print(e.name .. ", who weighs " .. e.mass .. " pounds, says, \"" .. e.phrase .. "\"")
end
local joe = {
name = "Joe",
phrase = "I'm a plumber.",
mass = 150,
hairColor = "brown"
}
local world = tiny.world(talkingSystem, joe)
for i = 1, 20 do
world:update(1)
end