Skip to content

Releases: CodedBytes/Game-Maker-Studio-2-Server-Library

Alpha release - v0.2

05 Aug 01:01

Choose a tag to compare

✨ Version release notes

At this v0.2 release, i added a lot of things compared to the previous one.
The focus of this new release was to add some start for the security of the Auth Server and the newly added Login Server, along with major changes for the Client's window style in-game UI, which was made only using code and not sprites.

Thanks to @JujuAdams, i could find some hash method that was compatible with the C# server, which is HMAC SHA256 Hash.
Thanks a ton! Your credits was been given on the codes and will be in the credits for the full client later on. 🙏

📐 What's New?

I've added several things, as i mentioned before and here's some explanations about each one of them.

  1. The IP Gathering System 📍 : The way i was getting the player's IP address was being inconsistent since it depended on an API web service to deliver it. Doing some researches it was obvious that making the client send the owners IP wasn't really convenient, so i changed the server-side to retrieve this kind of information by himself, instead of depending on the client, leading to the possibility of an easy fake IP address being sent to the client.
  2. The Packet Encryption System 🔑 : Based in the same analogy as explained above, during some researches on servers for online games made from scratch on Unity and Unreal Engine, i realized that some of them implements some kind of packet encryption on each packet sent from the client to the server. I decided to adopt an header hash encoding checklist to ensure the packets are restricted to clients and servers witch can handle this kind of encryption. It's based on the information of the original packet header data and a timestamp number for the packet. It's primitive but guarantees some kind of restriction.
  3. GUI Enhancements 📱 : Some enhancements where made on the client side's GUI in order to fix some bugs related to the window system, which was breaking down the pop-up and pop-out animation making the items inside the window weirdly float when pushing the window around and glitching out when closing.
  4. Forms 📨 : In addition to the enhancements made before, i made some UI assets scripts for Forms, which includes an Text Field component with the basic behaviors (inspired on the input text from HTML5) with 2 types of inputs Text and Password, and a Button component with animations and SFX support.
  5. Anti Flood at Login Server 🔐 : Floods will now be blocked by the Login Server. I'm currently developing some way to implement Blacklists and maybe some restrictions for how many times you can type an wrong password before being putting on an wait schedule inside the server for a certain amount of time. With a certain amount of tries with warnings was completed, the IP is directly sent to the blacklist. Also, features such as Whitelist,Anti DDoS and lookup schedules for Banned players will come along the Game Server and Database update.
  6. Logs 📃 : The encryption process and some other packet info are detailed and its gonna be logged on the server terminal once it's triggered, for now its inevitable but i'll make sure to add an trigger for that at the INI configuration file.
  7. INI File Changes 🔨 : The INI files now contains configurations for some basic things such as the name of the server, the current game client version that's supported for this version of the server, and some unnecessary things where deleted, such as database connection at the Auth Server, which should be an responsibility of the game server, login server, and others
  8. Auth Server Dependency 🔐: Now we have the complete client's dependency on the Auth Server. The Auth Server was imagined to be under control of all operations that the client need to do, related to the other servers we have connected to it. This server is capable of receive connection from either a game maker client, or a C# server and he's smart enough to distinguish them both by using the handshake packets. So the main idea is to put an extra layer of encryption and validation between the client and the other servers, and naturally, the Auth Server will be main target of commits to this repository when it comes to security and performance.
  9. Changing the .yyz to .yyzmps 📤 : And last but not least, Why did i changed since it basically does the same, you ask? .... well, i think that this should motivate people to create their own packets using only the library's scripts and using the HEX packet's explanation i did at the main README markdown file, i guess, but its basically the same as the YYZ file. but you gonna need to create an project first and set it up as you like, bringing more flexibility to users and not forcing them to open an new project just to implement online feature.

⚡ Final declarations

There are more changes to this release, which i highly recommend reading the scripts for the client, and the server commentaries as well.
I had explained every single function and it's functionalities for any level of developers using GameMaker, but you can always reach me out for explanations.

Thanks again to @JujuAdams, which wasn't an direct supporter for this project but indeed solved my problems with hashing with his repository.

Bellow, i'll leave the library (kinda of) .zzymps file for import into your own project.
I'll not put here the complied .exe files, because i don't think it's needed since you can just build the project and get the working .exe file, but what i will actually leave here is both configuration .INI files for Auth and Login Servers, don`t forget to change them to config.ini.

See ya next time!
God is the answer 🙏

Alpha release - v0.1

29 Dec 14:42
f4fca70

Choose a tag to compare

The very first version of the server.

Bellow you will find the source code, the compiled server, and the game maker studio 2 yyz library file.

For more specific packets for your own project, please consider compiling your own exe server file along your changes on the client side.