Skip to main content
GameDev.net gamedev.net

PRO Tired of ads? Read GameDev.net ad-free and help keep the community independent with GameDev Pro — $3/month.

[Ynamar Engine] #2 - Weekly Update

[Ynamar Engine] #2 - Weekly Update

Zotesso
Zotesso
Ynamar Engine · · 3 min read
2,071 0

Repository: https://github.com/Zotesso/YnamarEngine

Server - Progress

Network:
I have accomplished my goal of finishing the connection pool. It’s still an early version, and I want to refactor it.
I implemented both TCP and UDP connection pools, both using socket streams.
I’m wondering if, for the TCP connection, I should use some kind of API instead of raw sockets.
I will use TCP for tasks where I need to ensure that the data is saved, such as login, registration, and player information (like inventory).
UDP will be used for real-time tasks, such as notifying the map about player movement and attacks, as well as updating NPC health and deaths.

Accomplished as well the go to send the player data through packages, need refactor and improvements, right now I'm creating an buffer of byte array, and send it to the client, and the client receive the byte array and decompose it, already knowing the order of attributes sent by the package. - need to change it, to a better way.

Database:
Decided to use an releational database to store the Account Data, using PostgreSQL because it's a huge open-source DB.
For the ORM decided to go with EntityFramework to tasks that I need to have reliability on the data like account/login/register.
Searched about Dapper as well, thinking about using an hibryd approach with dapper to tasks that need to be done faster.

Services:
Created services that will have the responsability to communicate with the Database. (Really doubting if my implementation was right)

In the Image: a Test to validate if the ORM/DB implementation was done right.
The TestEntity is what I have by now, I will write in the next step section about it.

Client - Progress

Network:

I have accomplished my goal of finishing the connection Class to coordinate and handle packages received, both TCP and UDP.
Right now, I'm receiving just the player Name by the Server, it's just a test.

Game Logic:

Accomplished the goal of implementating a player movement system, with sprite animation and dir changes.

Graphics:

Fixed the DrawPlayerName method.
Added the tilesets and Map grid Draw.

For the map's, I also posted in the forum questioning about the right way to simulate the Z vector in a 2D Game, based on the responses I received, I'm thinking about solutions on how to implement exactly what I want.
But, already done Layers rendering in the actual DrawMapGrid method.

GUI:

Created the Menu manager, and the register/login interface menu (prototype)
It sends a package to the server, but right now is not working properly, whatever you type in the login input will always login.
















Next Steps

Server Side:

  • Add migrations to the Database, and created the migrations of: Account/CharacterData/Inventory
  • Implement the authentication/authorization funcionality
  • Refactor the TCP and UDP stream to have a graceful failover
  • Create Service/methods to all the actual covered scenarios of client (Login/Register/Player Movement/Another Player enter the Map)

Client Side:

  • Refactor the TCP and UDP Classes.
  • Add some type of local database (maybe SQLite) to save information like MapStruct, NpcStruct
  • Refactor the login/register system to be more secure.
  • Draw Npc/Items in the map
  • Draw Player HUD (to open inventory, see status etc…)

Thank you for reading again, I'll be even more thankful if you could give me some advice to accomplish that journey.

Thanks again,

Zotesso

Discussion

Loading comments...