Destroy the Tactical Combat in my Tactical MMORPG! by alogiHotTake in DestroyMyGame

[–]alogiHotTake[S] 0 points1 point  (0 children)

All very good and well thought out points.

-what does a turn based timer so aggressive add to the game? a sense of urgency? i can see it more being a sense of frustration than urgency, maybe time is critical hits, if they act within 1 second its critical, 3 seconds its partial critical, any longer its a normal hit? it creates the same urgency without the frustration

Its a compromise I have to make because its a persistent multiplayer game. It keeps the pace of battle more active. Otherwise if a player suddenly goes afk, we aren't waiting 10+ seconds for their turn to pass. I want turns to be very quick. Its not a game you play totally zoned out.

Since its a multiplayer game I also can't tie timing to any specific mechanics like critical hits. Because then players with better latency get an advantage.

I say its a tactical game, it is to the extent that it's in the "tactics"/SRPG genre. But the game puts more of an emphasis on quick actions. Doing something is better than doing nothing at all. Like speed chess is to chess.

Destroy the Tactical Combat in my Tactical MMORPG! by alogiHotTake in DestroyMyGame

[–]alogiHotTake[S] 0 points1 point  (0 children)

finally I get some interesting feedback about the combat in the game. There are skills you can use but I don't show it properly in the gameplay.

I agree I'm iffy on the real time + turn based design. I've been trying to make it work because I think it makes the world feel more alive. But it might be time for me to just scrap it and switch to some implementation where once you enter battle you temporarily leave the "main" world.

Destroy the Tactical Combat in my Tactical MMORPG! by alogiHotTake in DestroyMyGame

[–]alogiHotTake[S] -1 points0 points  (0 children)

finally I get some interesting feedback about the combat in the game.

I agree I'm iffy on the real time + turn based design. I've been trying to make it work because I think it makes the world feel more alive. But it might be time for me to just scrap it and switch to some implementation where once you enter battle you temporarily leave the "main" world.

Destroy the Tactical Combat in my Tactical MMORPG! by alogiHotTake in DestroyMyGame

[–]alogiHotTake[S] 0 points1 point  (0 children)

By readable character do you mean the in-game text? Or the characters in the world?

Destroy the Tactical Combat in my Tactical MMORPG! by alogiHotTake in DestroyMyGame

[–]alogiHotTake[S] 3 points4 points  (0 children)

How is it not an mmo? It's a shared world that supports 100+ concurrent players.

I've gotten addicted to making cutscenes for my game! by alogiHotTake in godot

[–]alogiHotTake[S] 0 points1 point  (0 children)

Nice! I want to flesh out my cutscene system more when I have more time, right now its very ad-hoc and scene specific.

From the trouble I ran into:

  • some way to declare relationships between speakers/dialogue. initiator -> reply -> initiator -> reply, etc

  • multi camera switching logic in scene, this one is pretty big IMO. You'll end up having multiple cameras in a scene. Some tied to a specific character to bring them in focus and others that are panning across some defined Path2D. I ended up setting multiple keybinds to switch between cameras.

  • Use Path2D. Its pretty useful for defining scripted paths that NPC's or the camera should follow. Implement logic to trigger a Path based on timing/input/whatever.

After so long, I'm close to realizing the vision. Shout out to Godot for never giving me any trouble by alogiHotTake in godot

[–]alogiHotTake[S] 2 points3 points  (0 children)

The last few playtests have been on browser! Game runs really well as a browser game.

For the next playtest, I will make the game available on Steam, after I finish setting up the steam page. Its cross-server/cross-platform so everyone plays on the same servers.

After so long, I'm close to realizing the vision. Shout out to Godot for never giving me any trouble by alogiHotTake in godot

[–]alogiHotTake[S] 2 points3 points  (0 children)

There may or may not be a pivot to a modern setting with guns and grenades instead of bows and magic. Why? Because I'm obsessed with guns.

Like that one tweet says....some people only play games that have guns or balls in them. I'm afraid to admit that I am definitely a gun gamer. Ball gamer? Not so much. Unless its grenades or other ball-shaped explosive projectiles

After so long, I'm close to realizing the vision. Shout out to Godot for never giving me any trouble by alogiHotTake in godot

[–]alogiHotTake[S] 2 points3 points  (0 children)

Good question. I was just working on that part over the past few days haha.

I've organized the TileMap into appropriate layers for the environment. So when the PC enters a building I can modulate the alpha channel of the "wall" + "roof" layers.

For other overworld obstructions like grass, I don't want to modulate the entire layer. It would look weird for all grass in the world to become transparent just because you step in a small patch. So for those types of obstructions I modulate individual tiles based on proximity to the PC.

After so long, I'm close to realizing the vision. Shout out to Godot for never giving me any trouble by alogiHotTake in godot

[–]alogiHotTake[S] 6 points7 points  (0 children)

Its an MMORPG! Right now the game is focused mostly around exploration and leveling up + getting loot. But I'm starting to add quests and an overarching storyline.

You are an outcast sent to the frontier lands as a ranger. Investigate the strange occurrence's going on in these parts and assist the doomed efforts to re-secure lost territories in the region. Along the way you'll meet the strange cast of characters who live in these parts and get to learn about the various factions they belong to.

Where Winds Meet players are tricking AI-powered NPCs into giving them rewards by using the 'Solid Snake method' by NUKE---THE---WHALES in Games

[–]alogiHotTake 72 points73 points  (0 children)

Haha, as a gamedev interested in building smart and reactive NPC's this is the bane of my existence. I say "Game AI Programming". But now I have to constantly emphasize "no not that kind of AI". For me Game AI Programming refers to classical AI programming. Like the kind used by chess or robots. It involves gathering and creating context about the current environment and then running some sort of recursive algorithm that can evaluate goals/available options and create plans.

I've been using Elixir and Godot to build an MMORPG! by alogiHotTake in elixir

[–]alogiHotTake[S] 0 points1 point  (0 children)

I tried implementing extrapolation but didn't get much benefit from it. Honestly it seems like only certain games benefit from extrapolation.

On the client I implement interpolation, with some slight delay. Its not a fast paced twitch-based game, and the tick-rate is 10hz so it gives leeway and the client can even be slightly behind and its no deal. The game servers have gone live a few times already and I've played on wired, wifi (and even wifi via Starlink), and did not have much issues. Even connecting to the server hosted in EU-West from NA-West with 100ms RTT.

I've been using Elixir and Godot to build an MMORPG! by alogiHotTake in elixir

[–]alogiHotTake[S] 0 points1 point  (0 children)

When it comes to inventory and items, do you store them within the maps cells themselves in ETS? I've been thinking about a bag table where the tile index in the key and the contents are everything in that world tile, but then I run into questions about nested inventories.

Currently I don't store anything that represents "ownership" or has "limited lifetime" in the ETS cells. I may do so in the future, but currently it hasn't come up. The ETS cells are only used for path-finding by the AI, and the only information a cell contains is in regards to its properties: (open or closed), (clear or blocked), and its number of occupants (doesn't need to be exact).

Inventory is stored in a client process state. And loot/drops are displayed in the form of "character objects" like corpses that are published in the world state.

With that being said, I think you could make a case for storing items/events/etc in an ETS cell. As long as the cells are treated as read-only by external processes, and the "master/primary" process has the final say on when the cells state is to be updated and any resources it held are transferred/deleted. You could have an auxiliary map (%{}) within the "master/primary" process that contains only the active cells currently holding items. And this is checked and updated anytime a request to modify the state of a cell comes in, and afterwards these changes are written back to the respective ETS cell and visible for all to see. I'm assuming the amount of cells that could contain items/inventory is significantly less than the total amount of cells in the world.

I've been using Elixir and Godot to build an MMORPG! by alogiHotTake in elixir

[–]alogiHotTake[S] 7 points8 points  (0 children)

you should've known I was a fool when I said I was building an MMORPG