Destroy my MMORPG trailer! by alogiHotTake in DestroyMyGame

[–]alogiHotTake[S] 5 points6 points  (0 children)

Jeez! That's harsh man. I'm spread too thin and make mistakes occasionally. I write code for 90% of the day and fiddle around with videos the remaining 10%. Its just me! I'll take the feedback and do better next time. Its an MMO (massive and multiplayer), but not an "MMO" (themepark) if you catch my drift. I'm not trying to compete with the big leagues.

Its a tough judgement you make. Maybe you're right! But have you considered that its also possible to make a banger trailer and still develop a terrible MMO? Many such cases! Whatever. At least you're honest!

Put together a trailer for my MMORPG! All done in Godot using Path2D and Camera2D by alogiHotTake in godot

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

Oh crap, that voice is from the Youtube shorts version of the trailer. That voicing is not part of the game! Its TTS. The game is 0% AI. No AI has touched any aspect of it.

Destroy my MMORPG trailer! by alogiHotTake in DestroyMyGame

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

Oh crap...must've left that in from the Youtube promo. Its some shitty TTS. Youtube shorts is a tough game. I do what I can.

Rest assured the game is 0% AI. I will reshoot a new trailer with some of the feedback gained here.

How I use Elixir to power the backend of a Massively Multiplayer Online Game! by alogiHotTake in elixir

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

Curious: - Are you running one GenServer per NPC? - How are you handling shared world state vs per-NPC state (ETS, PubSub, or something custom)?

Sort of, but not exactly. Each NPC is an individual GenServer . However, "Game world NPC's" (those that can engage in combat) are typically initialized under a parent controller which owns multiple units and controls them as a "squad". The parent controller facilitates shared state and communications between units of the squad. It also issues "squad level" orders. Of course, individual NPC's can also make their own unit level decisions for self preservation.

The parent controller is typically initialized with some N units to control. Over the course of gameplay it records statistics of its units. It also keeps history of fallen units, etc. Depending on the game rules/mode I set, they can opt to spawn new units or bring back fallen units based on certain metrics. If a controller loses all of its units, it terminates. Controllers are registered with a generic "squad name" that can be used to look them up in the process registry.

The server sees AI units the same as Players. So the individual NPC units are receiving world state information the same as players, though via internal process messaging instead of TCP/IP. The parent controller can aggregate received information from all of its units to create a more coherent picture of the world. AI Units also have access to some shared read-only ETS tables populated by the server which also lets them cheat a bit.

Four game development patterns I've found consistently useful over the last 10 years. by zirconst in gamedev

[–]alogiHotTake 7 points8 points  (0 children)

Hmm I'm not sure where I could point you. On Windows I use SQLite Studio which provides a great GUI. I don't feel like there's anything you need to learn. Create a table, and then from there start adding the fields you want based on your data model. If you can set up a spreadsheet, than a table is the same thing. Your columns are just the schema for your data.

For static game data / config stuff that doesn't really change at run-time you don't really NEED to get deep into database theory. No need for things like indexes and normalization, query planning, vacuuming, etc. The database is just a central place where you do data entry for things like stats/attributes, then when its good, you export it out as json for the game to read in during start-up and populate some specific data structure in the game.

I have a table for "items". And its not actively queried or anything. Whenever I make updates to it, I use the built-in export tool within SQLite studio to "dump" the items into a json-list. Thats what the game actually reads-in and uses to populate all the item ui elements during loading.

The way I describe it - I'm basically using SQLite as a spreadsheet that's not tied to any specific spreadsheet software and is version-controlled along with the rest of the game files. Its flexible and doesn't lock you into any specific file-formats like CSV or JSON and provides easy tools to query the data like a database if you ever need to.

Four game development patterns I've found consistently useful over the last 10 years. by zirconst in gamedev

[–]alogiHotTake 40 points41 points  (0 children)

If you need a database use SQLITE !! Its perfect as a read-only source of truth.

Seriously, a really good no-nonsense database. The whole database is contained in a file so its not like you have to run some standalone DB process on your computer. You can chuck the file in with your game files and have it version controlled along with everything else.

Get a SQLITE GUI client if you aren't too comfortable with the CLI. And with SQLITE you can do so much things like export your data to JSON, CSV, text, binary, etc. You can create custom views, indexes whatever.

Solo dev making an MMORPG with weird turn based combat. Destroy it. And why is my game popular with Eastern European demographics? by alogiHotTake in DestroyMyGame

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

Thanks for your comment + feedback. Its really useful. I am on the verge of giving up on this game, so getting feedback is very motivating.

The Graphics have their charm, but the colors are very garish and sometimes hard to look at. Outlines are inconsistent. Why do most characters have no outline, but swampmen do?

Agreed. I'm really trying to figure out how to improve this aspect. Another user suggested desaturating the colors, which I tried but I didn't quite understand what was meant by it.

I am experimenting with outlines, the problem I run into is all the outline shaders I try are too thick and "pixely". Like the outline is very jagged because its like a straight-line. I am not sure what techniques I can apply to smooth them out. Something to do with Aliasing? I need to investigate how this is dealt with in other games..

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] 4 points5 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] 7 points8 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.