opticfluorine | Sovereign MMORPG Engine's Avatar

opticfluorine | Sovereign MMORPG Engine

@sovereignengine.com.bsky.social

Developer of Sovereign Engine, an open source 2.5D MMORPG engine. https://sovereignengine.com | https://github.com/opticfluorine/sovereign #gamedev #mmorpg #programming #software #gaming

2,081 Followers  |  4,010 Following  |  74 Posts  |  Joined: 26.10.2024  |  1.6209

Latest posts by sovereignengine.com on Bluesky

Sovereign Engine's NPC support is now 50% complete! The integrated NPC editor together with Sovereign's powerful scripting engine will allow creators to make rich dynamic game worlds for their ORPG. Stay tuned for some demos in the near future.

#gamedev #rpg #orpg #mmorpg #indie #opensource

19.06.2025 14:39 โ€” ๐Ÿ‘ 8    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Screenshot of Sovereign Engine v0.6.0 showing the new day-night cycle.

Screenshot of Sovereign Engine v0.6.0 showing the new day-night cycle.

Sovereign Engine v0.6.0 has been released! This release continues to add fundamental mechanics together with bugfixes and performance improvements.

Highlights include:
* Physics, jumping, and collisions
* Calendar with day/night cycle
* New Windows installer

Check it out at sovereignengine.com!

08.06.2025 17:37 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Thinking about procedural generation of large worlds... The Minecraft approach - multiple noises feeding elevation, surface decoration, biome picking, etc - is very interesting. I want to try using wavefunction collapse for tiled noise as input to a higher layer - should be interesting. #gamedev

29.12.2024 02:07 โ€” ๐Ÿ‘ 11    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image 22.12.2024 02:40 โ€” ๐Ÿ‘ 104    ๐Ÿ” 37    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 1
Post image

Live now at twitch.tv/SpaceRobotArm

Streaming RPG Maker 2000!

20.12.2024 00:51 โ€” ๐Ÿ‘ 29    ๐Ÿ” 7    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Lua code:
function on_player_entered(event)
    local playerEntityId = event.EntityId
    
    -- [... do usual post-login stuff ...]

    -- build the entity... pass in a table with a list of named components
    local newEntityId = entities.Build({
        Parent = playerEntityId,
        Name = "Test Entity"
    })

    -- entities.Build(spec) returns an entity ID on success, nil on failure
    util.log_info(string.format("New entity ID = %s", newEntityId))
end

Lua code: function on_player_entered(event) local playerEntityId = event.EntityId -- [... do usual post-login stuff ...] -- build the entity... pass in a table with a list of named components local newEntityId = entities.Build({ Parent = playerEntityId, Name = "Test Entity" }) -- entities.Build(spec) returns an entity ID on success, nil on failure util.log_info(string.format("New entity ID = %s", newEntityId)) end

Just added to the server-side scripting in Sovereign: entity creation! Pass in a table of components, get back an entity. Doesn't get simpler than that.

My to-do list of how to use this:

* Put starter packs in new players' inventories
* Spawn monsters everywhere

#gamedev #mmorpg #indiedev #lua

18.12.2024 02:25 โ€” ๐Ÿ‘ 6    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Screenshot of Sovereign Engine showing the names of two players above their player sprites.

Screenshot of Sovereign Engine showing the names of two players above their player sprites.

Today's engine update: players are now identified with their names above their player sprite. It's a small change, but for me it's starting to make the engine feel "real". Excited to keep pushing forward!

#gamedev #mmorpg #indiedev

16.12.2024 03:38 โ€” ๐Ÿ‘ 8    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

All of the Christmas cakes together! Which one would you choose? ๐ŸŽ„

#pixelart

15.12.2024 22:10 โ€” ๐Ÿ‘ 48    ๐Ÿ” 11    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
Introduction to Behavior Trees - YouTube This is a series of lectures on Behavior Trees, a hierarchical modular way of combining control policies for AI and robotics.

I've been enjoying this playlist on Behavior Trees from Petter Ogren. Can anyone recommend some other good materials on behavior trees, especially scalable many-agent models?

youtube.com/playlist?lis...

#gamedev #ai #gameai #compsci

15.12.2024 01:52 โ€” ๐Ÿ‘ 6    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Screenshot of the Sovereign Engine resource editor. The Animated Sprites tab is selected, and the "Moving" phase for a slime sprite is displayed.

Screenshot of the Sovereign Engine resource editor. The Animated Sprites tab is selected, and the "Moving" phase for a slime sprite is displayed.

Added support for high DPI displays to Sovereign Engine! Here's a screenshot of the built-in Resource Editor using the new font and improved scaling.

In the meantime, work continues on the server-side Lua scripting engine, which is 80% complete.

#gamedev #indiedev #mmorpg

14.12.2024 14:45 โ€” ๐Ÿ‘ 10    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Mirage Source - A Look Through History [Part 1]
YouTube video by Mirage Gaming Mirage Source - A Look Through History [Part 1]

Great retrospective on the hobbyist 2D MMORPG community from the early 2000s. Lots of creativity and innovation with limited resources - fascinating work.

youtu.be/hgbjhlGDHaw?...

#gamedev #mmorpg #mirage #vb6

08.12.2024 01:36 โ€” ๐Ÿ‘ 5    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Those race conditions are tough to debug, but they sure feel like an accomplishment when you figure them out haha!

01.12.2024 01:21 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

4/ From there it was straightforward. Inspect the barriers around the buffer update, find that the barrier scope didn't include uniform buffer operations. NVIDIA either implicitly applied a barrier or was just fast enough that it didn't happen. AMD on the other hand showed a race condition. Fun!

01.12.2024 01:14 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

3/ I found out by breaking it with another bug. I made a typo that accidentally blew up the sprites to around 5x their usual size. Suddenly it was clear that it wasn't noise - it was the font atlas from the previous draw call. The texture offset in the uniform was still pointing to it - sometimes.

01.12.2024 01:12 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

2/ The breakthrough came in figuring out what the flickering was. At first the sprites were small and the flicker looked like noise. Oddly, it even flickered within the same frame in Renderdoc. That's a giant red flag for a race condition or missing barrier, but what was it?

01.12.2024 01:10 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Another fun bug: all of the sprites drawn on my GUI kept flickering, but only on AMD GPUs. Never NVIDIA.

I was updating a uniform buffer for the texture offset. The graphics lib missed a barrier for uniforms. Patched library, sent a PR, works now.

And that was my intro to Vulkan.

#gamedev #bugs

30.11.2024 23:51 โ€” ๐Ÿ‘ 26    ๐Ÿ” 3    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 0

Favorite bug so far: early on I ran into an issue where the engine reported the mouse was hovering over an object one space down from the cursor. Turned out the mouseover code was fine, the renderer was drawing everything off by one and the whole world needed to shift. Oops!

#gamedev #bugs

30.11.2024 15:30 โ€” ๐Ÿ‘ 11    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Modernizing the engine code is off to a great start - just got the server running again, but now with the built-in Dependency Injection and Serilog instead of Castle. Startup times are dramatically faster, and the code is much cleaner!

Next up, getting the client to run again.

#dotnet #gamedev

27.11.2024 16:43 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Poorly worded, but referring to the direction that interfaces are crossed in the architecture - specifically, it gives better alignment with something like Clean Architecture where dependencies only flow in one direction. Reflection-based IoC makes it easier to break that rule without thinking.

26.11.2024 05:50 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

The old way of doing dependency injection: reflection-based containers that compose from the inside out at runtime. Switching to a modern outside-in container is a mental shift, but gives much cleaner architecture and better alignment with .NET source generators. Worth it.

#dotnet #ioc #programming

26.11.2024 02:57 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Taking a break from implementing the Lua scripting backend in order to eliminate some technical debt. .NET has changed a lot since I started tinkering with this project, and it's time to catch up with Generic Host and the built-in dependency injection. Big effort, but worth it.

#dotnet #gamedev

26.11.2024 02:18 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Thanks, appreciate it!

25.11.2024 14:20 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Hey, any room left to join?

25.11.2024 02:18 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Careful, this is a slippery slope that ends in writing your own OS because the stock filesystem isn't good enough...

25.11.2024 02:14 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image 24.11.2024 20:38 โ€” ๐Ÿ‘ 60140    ๐Ÿ” 15399    ๐Ÿ’ฌ 699    ๐Ÿ“Œ 506

Looks really good! Do you have different controls for placement ahead of/behind the player?

23.11.2024 23:14 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Yep, I just finished a code generator for binding Lua libraries and now all I want to do is write more code generators lol. It's addictive!

23.11.2024 21:39 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

D&D Combinatorics xkcd.com/3015

23.11.2024 00:59 โ€” ๐Ÿ‘ 27093    ๐Ÿ” 2180    ๐Ÿ’ฌ 203    ๐Ÿ“Œ 109

โ€œWhat if you just actually modeled another world, in as much detail as possible, and let players loose?โ€ -- Raph Koster, Ultima Online's Influence

This is what inspires me. I think an open source engine, free of any commercial obligations, can achieve this. And it's fun to build a game like this!

23.11.2024 01:35 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Hey, can I join?

22.11.2024 18:35 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@sovereignengine.com is following 19 prominent accounts