This is a totally private project, the copyright of this code belongs to GG Studios, some assets and UI concepts belong to the BigPoint company, for now it is a non-profit project.
Special thanks to s3kglitches (YouTube) who provided me with many sprites from 2009, TexterDo1 (GitHub) which provided me with the initial tools with the DeathSpaces 3D emulators, ooscargerman (GitHub) which gave me a lot of knowledge in cyber security for cloud servers, BotNet and DDoS attacks and how to protect myself from them.
Mission: recreate a version of darkorbit based on 2009.
Vision: Create a new game concept based on DO, but with a plot twist in terms of events, community and teamwork, taking all the good of DO to create a solid community
Frontend: Vue.JS (HTML5, JavaScript, CSS)
Game client: GDScript
Backend: GoLang
Database: MySql
Frontend: 8080
MySql: 30200
Backend: 8082
Socket: 8081
To-do...
Frontend:
Game client:
Backend:
Database:
Concept of the classes and endpoints of the project ... but this is not in detail.
Global architecture
Client classes
API endpoints and classes
Socket endpoints and classes
To-do
Database modeling
Database example data
player_id: int | auto increment
session_id: default null | value auto generated by JWT
info: The last IP that at the beginning is the same IP of registration and the date of registration
server_id: default 1
username: default null
password: default null | encrypted by MD5
email: default null
data: default {"uridium":0,"credits":0,"honor":0,"experience":0,"jackpot":0}
current_config default 1
health default 0
shield default {"firstConf":0, "secondConfg":0}
position: default {"x": 0, "y": 0} | change depending the faction
map_id default 0 | change depending the faction
ship_id default 1
booty_key default 0
premium default {"active":false,"date":null}
titles default []
faction_id | change depending the faction
clan_id default 0
rank_id default 1
rank_points default 0
rank default 0
extra_energy default 0
gate_rings default 0
old_pilot_name default []
player_id int
config_lasers default [[],[]] | the number is based on the position of items in this same table
config_generators default [[],[]] | the number is based on the position of items in this same table
config_drones default [[],[]] | the number is based on the position of items in this same table
config_extras default [[],[]] | the number is based on the position of items in this same table
items default {"lf1Count":0, "lf2Count":0, "lf3Count": 0, "mp1Count":0,"a01Count":0, "a02Count":0, "bO1Count":0, "bO2Count":0, "1010Count":0, "2010Count":0, "3210Count":0, "3310Count":0, "6900Count":0, "7900Count":0, "geminex":0, "sl01Cpu":0, "sl02Cpu":0, "sl03Cpu":0, "clo4kCpu10":0, "clo4kCpu50":0, "rep1":0, "rep2":0, "rep3": 0, "rep4": 0, "rokt01":0, "ncrrbCpu":0, "sm01Cpu":0, "ish01Cpu":0, "rllb1Cpu":0, "hm7":0, ships":[], "designs":[], "skillTree":{"logdisks":0,"researchPoints":0,"resetCount":0}}
cargo default {"Prometium":0, "Endorium":0, "Terbium":0, "Prometid":0, "Duranium":0, "Xenomita":0, "Promerium":0, "Seprom":0}
ammo default {"lcb10":0,"mcb25":0,"mcb50":0,"mcb100":0,"rsb75":0,"sab50":0, "r310":0,"plt2026":0,"plt2021":0,"acm1":0,"eco10":0,"pem01":0}
skill_points defualt {"engineering":0,"shieldEngineering":0,"detonation1":0,"detonation2":0,"heatseekingMissiles":0, "rocketFusion":0,"cruelty1":0,"cruelty2":0,"explosives":0,"luck1":0,"luck2":0}
base_modules default []
boosters default {}
log_id int | auto increment
killer_id | killer of the player
target_id | victim of the killer
date default now()
player_id int
audio default {}
quality default {}
bound_keys default {}
slotbar_items default {}
slotbar_items_pro default {}
npc_id int | auto increment
ship_id int | this is the reference to server_ship
health | this change depending type of ship
shield | this change depending type of ship
position default {"x":0, "x":0} | random position in the map
map_id int
ship_id int | auto increment
base_ship_id int
loot_id | name of the sprite
name | name of the ship
health default 0
shield default 0 | for type NPC
speed default 0
lasers default 0 | laser slot of the ship (player)
generators default 0 | generator slot of the ship (player)
cargo default 0 | cargo of the ship (player)
respawnable default false | for type NPC
reward default {"Experience":0,"Honor":0,"Credits":0,"Uridium":0}
ban_id int | auto increment
player_id | player that was banned
ip varchar(30)
reason varchar(200) | need a good reason to make bans
type int | 1 = chat ban, 2 = account ban, 3 = account permanent ban, 4 = ip ban
duration int | in hours...
id int | auto increment
player_id | id of the moderator...
type | 1 = [kickchat, chatban, accountban, account-permanent-ban, ip-ban] 2 = [kickchat, chatban, accountban] 3 = [kickchat, chatban] 4 = just kickchat
Basic multiplayer, simply ships shown and can attack each other, with a semi-functional chat
Improvements in attacks, types of attacks, movements and better abstraction, it does not contain a connected database or functional socket.
It will contain all the functionality of darkorbit 2009, except skylab, clans, auctions, general account settings, refinement of lasers or generators, bonus page, page to buy uridium, missions, without cubikones / npc with unique characteristics, only low maps will be available.
Conceptual UI
Available maps