Jump to content

Maybe Something to build a better, faster and efficient MTA?


Guest Shadowguy

Recommended Posts

Hi There...

I've been doing some Brainstorming, and maybe this text here i wrote could help the MTA-Team with making MTA more efficient. Or maybe it could inspire anyone else... Maybe the Game Control could be divided through several servers, with a separate Map-Server as reference

Maybe all three parts can be separate servers if that's easier :D

Game Control Part (2 separate ports for inbound and outbound)

=========================================

GameControl==>ClientControlport:

-----------------------------------------

# used Mainly for IngameDisplay

GameControlstatus, GameType, Healthstatus, CurrentWeaponAmmoAmount, WeaponsInInventory

# GameControlstatus:

# 0 = Server awaits Playercommand

# 1 = Server received command, and waits for commands of all other Players

#

# WeaponInventory: The Weapons that the Player has in his/her Inventory

#

# No need 2 explain the rest I Guess ;)

Position(x,y,z)

AmountPedsOrPlayersorVehiclesInClientPositionArea,

# ClientPositionArea is the area (Max. DrawDistance in all directions) where the player is

# and this value shows how much player, peds or vehicles there ar in the neigborhood

Object1(Type,xPos,yPos,zPos,Health,ID,SkinID,Animframe),

Object2(Type,xPos,yPos,zPos,Health,ID,SkinID,Animframe),

Object2(Type,xPos,yPos,zPos,Health,ID,SkinID,Animframe),

# Type: Player, Ped, Pickup or Vehicle

#

# ID: PlayerID, PedID or VehicleID

#

# SkinID: The Skin or Model this object uses

#

# Animframe: Current animation frame for Object

ClientControlport==>GameControl:

---------------------------------

# Used for letting GameControl know what is User's activity

ID, PlayerActivity, WeaponInUse, Facing/Aiming(x,y,z), Animframe

# ID: Player's ID number

#

# Playeractivity (The Normal Controls redirected to GameControl):

#

# 0 = Do Nothing

# 1 = Walk Forward

# 2 = Walk Backward

# 3 = Walk Left

# 4 = Walk Right

# 5 = Jump

# 6 = Shoot

# 7 = Crouch

# 8 = Carjack

# 9 = Step in as Passenger

# etc..

#

# WeaponInUse:

# 0 = Bare Hands

# 1 = Pistol

# etc.

#

# Facing/Aiming(x,y,z): The Position the Player is facing and/or is Aiming at

#

# Animframe: (for Animationsync only, maybe extravalue for AnimRotation could be added if needed)

In this way, the server is actually running the game, and the player is only running a "Remote control" with the GTA as a Display tool. This Prevents Cheating, because Server keeps al health,

Ammo ,inventory and position data

All Players sent One Command and its Parameters at a time, and the server will collect them (GameControlstatus=1 for Player when command is received).

When Server has all commands for each player, it processes it in a "Battleships" way in the order of the commands were given. After they are processed, the server sents each player his/her new data, and will set all GameControlstatus Values for all players to 0

When using multiple GameControlServers, it would be logical that they have a common Database of every status of each ID (health, ammo etc..). I guess the Map part could be that part

City Map Activity part (separate port)

========================================

CityMapServer==Client>:

---------------------------------------

# Normal mode shows Playerpositions on Map, and character Color

#

# When in Team Mode:

# All Players shown, and their separate team-color

#

#

# When in Blind Mode:

# No Playerpositions will be sent(more fun, because you can be suprised by anyone wandering by)

#

#

# When in Manhunt Mode: only the Target is displayed

#

AmountofPlayersDisplayed, Player(xxx)ID, Player(xxx)Position(x,y,z) , TeamOrCharacterColor

# (xxx) = player1, Player2 etc...

The Map Part could also be used as a reference when Using multiple Gamecontrol Servers. Maybe for dividing the City Area's ?

Chat Part (2 Seperate Ports for incoming and outgoing messages)

=================================================================

This is the chat part, in IRC style.

Server Administrator(s) can choose current Game Mode, and do their kick and ban commands here.

All the ID's names are here, so i guess this part could also do the statistics for all users, and be the frontend for the GameControl server(s)

the GameControlserver sends the Gametype Dynamicly to the Players, so the Game-Mode can be changed while playing. Maybe a Voting system can be added... let's say when more than half of the connected players type !Manhunt, GameMode switches to Manhunt Mode.

Anywayz....

Maybe this is something to think about... Maybe it's not...

Feel Free to make some suggestions...

Greetingz,

ShadowGuy

Link to comment

Firstly, thanks for taking the time to post your ideas.

What you have described there is the more "correct" way to go about programming a multiplayer game. One thing that seperates MTA from most other multiplayer games is that we do not have access to the games source code, and we also cannot perform any binary modification to the harddisk executable.

We are limited by what we can find and perform in memory. I don't think that's going to hold us back from creating better versions of MTA, but we often have to make this game do things it wasn't designed to do. And we often have to give up doing things conventionally because of these limitations.

Link to comment

Hmm...

Maybe you can Force the memory areas for inventory and other stuf do maintain the desired data that can be exchanged as i described... and you could try to read out the game's control (the Actions that are performed when you control the game).

since the server does all the work (You could program your own Game Engine on it in a Battleships style, so no reversed engineering there) and says what your position is, that could easily been forced into memory (the teleport thing if you know what i mean :D)

just say to the game... "I know you want to go there... but you'll stay here and accept MY specified position :P... And Yes... those things are in your inventory, so don't complain"

As i explained... the Game could be a "Remote Control" Frontend for the "battleships" server. The only thing is that you have to Mimic the weaponry in a more Virtual manner on the server...same goes for cars, peds etc...

I guess that would be a LOT of work... but it probably would be something to be satisfied of at the end...

Or you can hope that Rockstar Game is suddenly very Friendly, and tells you exactly where to look to take over the Game Engine, or maybe include you guys a bit into the next generation of GTA with a Multiplayer part (Sin City anyone ?)

Anywayz...

Good luck with the MTA-Project,

Shadowguy

Link to comment

Ghehe....

Here's another Smart Thing...

All the things of forcing values for the teleport thing, inventory, Ammo, weapons and stuff are already been used by the Trainers and cheats

So what if we Used the Trainers (that all REAL MTA-Players hate while playing) to our advantage to Eliminate cheating, and have a stable Game Itself ?

than probably my described way Could be done... A hell of coding at the server part, but something to consider... with some minor adjustments to my suggestion... For instance: all Player and Non-Player movement and/or status could also be done by the Map-server, to lift some load off the Control-server...

Divide the load into 3 servers i guess.. (keeping in mind that Downloading goes usually faster than uploading)

1 - Control Server

(gets one command at a time from a user, stacks up a list of commands by all users connected in the order the server receives them, execute the lists in that order in a Virtual (Battleships) way, and sends the new data back to all Users, to the Map-Server and the Chat-server and finally listens again to new commands.)

2 - Map Server

(Give all the in-Game Display data for the client, like player-positions and info, car-positions, pickup-positions etc...)

3 - Chat Server

(Used for managing Game Modes and Game administration, and keeping the scores)

(Damn.. Why can i only code in 6510 Assembler ?... My C-64 is just dusting away...*Sigh*)

Greetingz,

ShadowGuy

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...