Skip to content
Merged

Dev #58

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
a238320
monitors: dummy enter/leave fragments
BlackMATov Oct 13, 2026
e75e694
monitors: call monitors
BlackMATov Oct 14, 2026
abbd358
monitors: first version
BlackMATov Oct 14, 2026
353f46c
free one top-level local variable
BlackMATov Oct 15, 2026
2ab45e5
trace_all_chunks internal function
BlackMATov Oct 15, 2026
131cecf
monitors: some optimizations
BlackMATov Oct 16, 2026
c739c91
huge hook/monitor order reworking
BlackMATov Oct 16, 2026
10519fc
free up another top-level local variable
BlackMATov Oct 16, 2026
6ab5647
split chunk_set to chunk_assign/insert
BlackMATov Oct 16, 2026
99369fb
from monitors to observers wip
BlackMATov Oct 17, 2026
cc0733e
remove monitors temporary
BlackMATov Oct 17, 2026
8dd8ca1
Merge branch 'feature/monitors' into dev
BlackMATov Oct 17, 2026
d7facf9
remove query major chunks cache
BlackMATov Oct 17, 2026
f3193ec
dummy link and link policy fragments
BlackMATov Oct 18, 2026
5455cf4
first impl of links
BlackMATov Oct 18, 2026
04a3897
update readme
BlackMATov Oct 18, 2026
e86397b
fix destroying links order, clear search indices on update
BlackMATov Oct 18, 2026
5875108
Merge branch 'feature/links' into dev
BlackMATov Oct 18, 2026
c51db29
support target lists for linked fragments
BlackMATov Oct 18, 2026
a7169a4
custom index extraction
BlackMATov Oct 18, 2026
107bd57
fix tests exit code on failure
BlackMATov Oct 19, 2026
aa5088b
return query major chunks cache
BlackMATov Oct 19, 2026
e3a90a5
fix cached chunk ordering
BlackMATov Oct 19, 2026
9b4c161
minor cleanup
BlackMATov Oct 19, 2026
363df21
update changelog and issues
BlackMATov Oct 19, 2026
046bc23
NAME is now marked as UNIQUE
BlackMATov Oct 19, 2026
c26abea
warnings instead of errors when searching/indexing non-indexed fragments
BlackMATov Oct 20, 2026
caac116
bug report
BlackMATov Oct 21, 2026
b58851a
rewrite destruction logic
BlackMATov Oct 23, 2026
327aac2
inline version of releasing id lists
BlackMATov Oct 23, 2026
3139220
inline version of acquiring id lists
BlackMATov Oct 23, 2026
053a163
free up twp top-level local variables
BlackMATov Oct 23, 2026
af3991b
use constants instead 2 ^ 20 and 2 ^ 40 to avoid floating indexing on…
BlackMATov Oct 23, 2026
b958feb
more destruction tests
BlackMATov Oct 24, 2026
598cf76
cache link policy
BlackMATov Oct 24, 2026
573ca00
bug report
BlackMATov Oct 25, 2026
3a9db9f
cache chunk hooks
BlackMATov Oct 25, 2026
2e9e5d3
a little optimization
BlackMATov Oct 25, 2026
5c40dbb
a little defer optimization
BlackMATov Oct 25, 2026
4c440a6
free up top-level local variables
BlackMATov Oct 26, 2026
646e5c9
remove EXTRACT
BlackMATov Oct 26, 2026
3c76150
code style fixes
BlackMATov Oct 26, 2026
d9eb156
proof of concept unlink_target policy
BlackMATov Oct 26, 2026
a6ae64a
multi link optimizations
BlackMATov Oct 26, 2026
2c91560
index policy ids
BlackMATov Oct 27, 2026
dd8e3c7
indexing optimization and tests
BlackMATov Oct 28, 2026
bd3c3d4
update readme
BlackMATov Oct 28, 2026
955f869
Merge branch 'feature/index_policy' into dev
BlackMATov Oct 28, 2026
71c395e
fix gc of indicies
BlackMATov Oct 28, 2026
2fab283
update readme
BlackMATov Oct 28, 2026
48f81b1
v1.13.0
BlackMATov Oct 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
334 changes: 327 additions & 7 deletions README.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions develop/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
## Backlog

- observers and events
- add batch hooks for fragments
- add component mapper for batch_set
- use compact prefix-tree for chunks

## Thoughts
Expand Down
18 changes: 17 additions & 1 deletion develop/all.lua
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
require 'develop.issues.issue_52'
require 'develop.issues.issue_54'
require 'develop.issues.issue_55'
require 'develop.issues.issue_56'
require 'develop.issues.issue_57'

require 'develop.testing.build_tests'
require 'develop.testing.cached_hooks_tests'
require 'develop.testing.cancel_tests'
require 'develop.testing.clone_tests'
require 'develop.testing.depth_tests'
require 'develop.testing.destroy_tests'
require 'develop.testing.link_tests'
require 'develop.testing.locate_tests'
require 'develop.testing.lookup_tests'
require 'develop.testing.main_tests'
require 'develop.testing.mappers_tests'
require 'develop.testing.multi_index_tests'
require 'develop.testing.multi_spawn_tests'
require 'develop.testing.name_tests'
require 'develop.testing.process_with_tests'
Expand Down Expand Up @@ -38,10 +44,20 @@ basics.describe_fuzz 'develop.fuzzing.batch_destroy_fuzz'
print '----------------------------------------'
basics.describe_fuzz 'develop.fuzzing.explicit_fuzz'
print '----------------------------------------'
basics.describe_fuzz 'develop.fuzzing.index_fuzz'
print '----------------------------------------'
basics.describe_fuzz 'develop.fuzzing.link_fuzz'
print '----------------------------------------'
basics.describe_fuzz 'develop.fuzzing.pack_unpack_fuzz'
print '----------------------------------------'
basics.describe_fuzz 'develop.fuzzing.requires_fuzz'
print '----------------------------------------'
basics.describe_fuzz 'develop.fuzzing.unique_fuzz'
print '----------------------------------------'

print 'All tests passed.'
if basics.failure_count() == 0 then
print 'All tests passed.'
else
print(string.format('%d test(s) failed.', basics.failure_count()))
os.exit(1)
end
12 changes: 12 additions & 0 deletions develop/basics.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ local __table_unpack = (function()
return table.unpack or unpack
end)()

local __failure_count = 0

---@return integer
---@nodiscard
function basics.failure_count()
return __failure_count
end

---@param pattern string
function basics.unload(pattern)
for name, _ in pairs(package.loaded) do
Expand Down Expand Up @@ -63,6 +71,7 @@ function basics.describe_fuzz(modname)
iters))
else
print('|-- FUZZ FAIL: ' .. result)
__failure_count = __failure_count + 1
end
end

Expand Down Expand Up @@ -95,6 +104,7 @@ function basics.describe_bench(name, loop, init, fini)

if not success then
print('|-- WARMUP FAIL: ' .. result)
__failure_count = __failure_count + 1
return
end
end
Expand Down Expand Up @@ -126,6 +136,7 @@ function basics.describe_bench(name, loop, init, fini)
iters))
else
print('|-- LOOP FAIL: ' .. result)
__failure_count = __failure_count + 1
end
end

Expand All @@ -136,6 +147,7 @@ function basics.describe_bench(name, loop, init, fini)

if not success then
print('|-- FINI FAIL: ' .. result)
__failure_count = __failure_count + 1
end
end

Expand Down
94 changes: 94 additions & 0 deletions develop/benchmarks/process_bmarks.lua
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,97 @@ basics.describe_bench(string.format('Process Benchmarks: Evolved SoA Processing
function(w)
evo.destroy(w)
end)

basics.describe_bench(string.format('Process Benchmarks: Evolved Narrow Processing | %d archetypes', N / 10),
function(w)
evo.process(w)
end,

function()
local wf = evo.builder()
:set(evo.DESTRUCTION_POLICY, evo.DESTRUCTION_POLICY_DESTROY_ENTITY)
:spawn()

local tfs = {}

for i = 1, N / 10 do
tfs[i] = evo.builder():set(wf):tag():spawn()
end

local pf = evo.builder():set(wf):spawn()

for i = 1, N / 10 do
evo.multi_spawn_nr(10, {
[wf] = true,
[tfs[i]] = true,
[pf] = 0,
})
end

for i = 1, N / 100 do
evo.builder()
:set(wf)
:set(evo.GROUP, wf)
:set(evo.QUERY, evo.builder():set(wf):include(tfs[i], pf):spawn())
:set(evo.EXECUTE, function(chunk, _, entity_count)
local ps = chunk:components(pf)

for j = 1, entity_count do
ps[j] = ps[j] + 1
end
end)
:spawn()
end

return wf
end,

function(w)
evo.destroy(w)
end)

basics.describe_bench(string.format('Process Benchmarks: Evolved Wide Processing | %d archetypes', N / 10),
function(w)
evo.process(w)
end,

function()
local wf = evo.builder()
:set(evo.DESTRUCTION_POLICY, evo.DESTRUCTION_POLICY_DESTROY_ENTITY)
:spawn()

local tfs = {}

for i = 1, N / 10 do
tfs[i] = evo.builder():set(wf):tag():spawn()
end

local pf = evo.builder():set(wf):spawn()

for i = 1, N / 10 do
evo.multi_spawn_nr(10, {
[wf] = true,
[tfs[i]] = true,
[pf] = 0,
})
end

evo.builder()
:set(wf)
:set(evo.GROUP, wf)
:set(evo.QUERY, evo.builder():set(wf):include(pf):spawn())
:set(evo.EXECUTE, function(chunk, _, entity_count)
local ps = chunk:components(pf)

for j = 1, entity_count do
ps[j] = ps[j] + 1
end
end)
:spawn()

return wf
end,

function(w)
evo.destroy(w)
end)
Loading
Loading