<feed xmlns='http://www.w3.org/2005/Atom'>
<title>go_age_of_empire/physics/move.go, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.kagamino.dev/go_age_of_empire/atom?h=main</id>
<link rel='self' href='https://git.kagamino.dev/go_age_of_empire/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/'/>
<updated>2026-05-07T10:23:50Z</updated>
<entry>
<title>Fix unit stopping when destination is occupied by another unit</title>
<updated>2026-05-07T10:23:50Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-05-07T10:23:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=9590420f5f7595021771c216f3129827a0591b37'/>
<id>urn:sha1:9590420f5f7595021771c216f3129827a0591b37</id>
<content type='text'>
When a unit arrived exactly MOVE_SPEED away from its destination, it would
move there via moveToward rather than snapping. On the next tick, its own
cell appeared blocked in the moveMap, triggering a repath to an adjacent
cell — causing infinite oscillation. Fix by excluding the unit's own current
cell from the blocked check before repathing. Also adds repath-to-adjacent
logic so units that arrive while the destination is genuinely occupied by
someone else settle next to it instead of stopping mid-journey.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Switch font to Cinzel variable font</title>
<updated>2026-03-01T21:19:04Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-03-01T21:19:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=2e8da8cb6948664a77fa73cb0c66e0cc27419dc5'/>
<id>urn:sha1:2e8da8cb6948664a77fa73cb0c66e0cc27419dc5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: prevent entities from overlapping when arriving at the same cell</title>
<updated>2026-03-01T20:52:49Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-03-01T20:52:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=5728ebc309b4753c939d751c7fd489b108e5dc09'/>
<id>urn:sha1:5728ebc309b4753c939d751c7fd489b108e5dc09</id>
<content type='text'>
Update UpdateMoveSystem to maintain the moveMap as entities move
within a tick. When an entity snaps to a grid cell:
- Block the new cell in the moveMap immediately
- Unblock the old cell

Before snapping, check if the target cell was already claimed by
another entity earlier in the same tick. If so, repath instead of
overlapping.
</content>
</entry>
<entry>
<title>refactor: transition to struct-of-arrays ECS architecture</title>
<updated>2026-01-15T21:05:46Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2026-01-15T21:05:38Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=13626410c4d6db7fdc15ded5ee7865fcdbf0b88a'/>
<id>urn:sha1:13626410c4d6db7fdc15ded5ee7865fcdbf0b88a</id>
<content type='text'>
- Replace individual Entity structs with centralized component slices in Game struct (SoA layout).
- Implement bitmask-based component lookup (CM_Position, CM_Move, etc.).
- Convert logic from object-oriented Update() methods to standalone Systems (UpdateMoveSystem, UpdateGatherSystem, UpdateSpawnSystem).
- Update rendering, selection, and input handling to iterate over component arrays.
</content>
</entry>
<entry>
<title>refactor: Early return move</title>
<updated>2025-07-24T12:27:43Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-07-24T12:27:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=d9fcd87061b1ca652398f331deef58630279bed3'/>
<id>urn:sha1:d9fcd87061b1ca652398f331deef58630279bed3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow diagonal move</title>
<updated>2025-07-08T21:45:58Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-07-08T21:45:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=8216f68ff8516cebc961028f8b8a87c1684dc15a'/>
<id>urn:sha1:8216f68ff8516cebc961028f8b8a87c1684dc15a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refactor into packages</title>
<updated>2025-07-04T21:02:21Z</updated>
<author>
<name>Martin Kagamino Lehoux</name>
<email>martin@lehoux.net</email>
</author>
<published>2025-07-04T15:55:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kagamino.dev/go_age_of_empire/commit/?id=a5fef758107888853c14a592696b45768ef56df8'/>
<id>urn:sha1:a5fef758107888853c14a592696b45768ef56df8</id>
<content type='text'>
</content>
</entry>
</feed>
