PostPhoenix Public Source: An Invitation

Posts 1–15 of 18 · Page 1 of 2
Phoenix Public Source: An Invitation
This is an invitation for people who are tired of debating between FSoD, SD, or Club559 sources and would much rather prefer working on the things they want rather than what they don't know about. This is an invitation for people who wish to see a well-developed, open-source private server. This is an invitation for people who like the idea of community-voted features.

This is a project that will take the Phoenix Realms 2: Reborn source and convert it into a source that private server owners will be able to appreciate and add onto with ease. After some rather long lamenting of the amounts of backtrack work that my team has been set back due to several structural limitations, the Phoenix team decided it would be best for everyone to use our progress and put it in the favor of the community, in a way that no other RotMG source release has done before.

This is not a "let's make an open source repo whatev" attempt. I have specific goals and guidelines for this project, and I have a few notably experienced programmers who are willing to work on it.

The basic ballpark goal of this project is to create an optimized, modular source that private servers will look towards using.

Now, time for some specific insights on what this exactly means.

GOALS
This project has three main goals, each of which I will explain in detail.

1.) Production Value
I want to make it as easy as possible for server owners/scripters to create or modify content in the source.

I am focusing on making processes such as creating items, behaviors, and classes smooth as possible. This involves modularity, and partial support through a scripting/markup language. I won't make large changes to systems dependent on XML, to ensure backwards compatibility of all content created on private servers. Those who work on the actual source code itself will be confined to a specific C# code style and practices guide, to ensure maximum readability (and because mixing up a lot of people's code styles is just plain terrifying).

2.) Performance
I want to make the server capable of stable performance on reasonable hardware.

With that being said, don't come crying to me if your server lags because it can't handle ~25 people on Hamachi with your shit internet. C# is not particularly a language known for its potential to create performance-critical applications, but aside from C++, it's considered a contender. The source will employ common practices such as managed garbage disposal, concurrent threading, and elimination of network redundancy to bring a comparable performance to that of Realm of the Mad God.

3.) Features
Any high-demand features that can't be scripted in will be a goal to implement.

We could look at a base CreepyLava source and say "hey, that's nice" but in reality, the use of that kind of source often puts behind hours of possible work because of the need to implement features that were MIA from such a thing. Now, since this is a general-use source, overly-specific feature requests will NOT be implemented. However, certain possibly modular features that get a lot of approval from the community will be looked into for implementing into this general source.

Specific mini-goals
These mini-goals are more of just ideas, and may/may not go through the development process
  • Deobfuscation of the 123.5.1 client source
  • Restructuring of account/character handling to prevent reconnect/possible dupes
  • Removal the HTTP intermediary in packets
  • Port to a speed-emphasized NoSQL database engine
  • Track-and-log systems for diagnostics of errors/hacking
  • User Feedback systems
  • Resizable entity/projectile collision fields
  • Settings and scale values for systems in the whole server or specific worlds (like 200% bonus loot chance for a day)


Development Phases
There are three rough phases of development that will happen in this project.

Phase 1: Private
This is the shortest phase, and it consists of simply removing anything overly specific about the Phoenix source, and returning it to a generalized state. This means that we'll be removing the custom stats such as Resilience and Penetration, and anything else that seems more fitting for Phoenix rather than RotMG. The only people who will be working in this phase are programmers from Phoenix, but this shouldn't take too long.

Phase 2: Restructuring
This is the phase where we make it open-source, and begin working on modularity and performance, mainly. We won't touch too much on actual feature implementation, but features WILL be considered when we consider the creation of our systems, and how they can interoperate smoothly. At this point, any build, unstable or not, should and will be tested for being able to run under basic conditions.

Phase 3: Expansion
After most of the groundwork is done, phase 3 is where the source is considered "complete" but will continue in development for highly-vouched features and systems that the community requests. At this point, it's expected that the source development may slow down or even halt, but that's not a huge issue because the source has been completed already.

Collaboration

This is meant to be a collaborative project, although at first it may not seem like it. I will expend a good amount of time to see this project grow, but I will not hesitate to leave it if this community is not well-interested in this project's growth. I see this as a test for this community. This is designed to be an open source project, that will only give as much as the community gives. I will oversee the project to ensure that the system stays true to its goals and guidelines, but other than that, the great driving force of this project will come on your desire to create a better RotMG private server for everyone to enjoy.

To collaborate in phases 2-3, just fork the latest build from the repository and submit a pull request when you're finished with what you want to implement. Only very active contributors will get direct write access.

If you're not very experienced in coding, you can always help contribute by voting on or creating feature requests for the source. Remember, you as the community get to decide what features go in! Want BlockSight? We'll implement it. Want prod-like backpacks? We'll implement it. It's sort of like a democratic-monarchial process.

I'll post updates on how this project is going through Phase 1 as it makes its way to Phase 2.
Quote Originally Posted by Stellar Spark View Post
This is an invitation for people who are tired of debating between FSoD, SD, or Club559 sources
Rip creepylava.

Quote Originally Posted by Stellar Spark View Post
and I have a few notably experienced programmers who are willing to work on it.
Thanks I love you too <3

Quote Originally Posted by Stellar Spark View Post
(and because mixing up a lot of people's code styles is just plain terrifying).
Flashback.... *gets chills*

Quote Originally Posted by Stellar Spark View Post
don't come crying to me if your server lags because it can't handle ~25 people on Hamachi with your shit internet.
xdddd

Quote Originally Posted by Stellar Spark View Post
We could look at a base CreepyLava source and say "hey, that's nice"
but hey, thats nice!

Quote Originally Posted by Stellar Spark View Post
Deobfuscation of the 123.5.1 client source
DONT MAKE ME DO THIS! actually, make me do this. *hint hint HINT*
Quote Originally Posted by BlackRayquaza View Post
Rip creepylava.
let's be honest

in terms of most people here who are scripters and spriters and NOT coders

putting up a CL server is like hipster except not cool
Quote Originally Posted by Transferred View Post
TL;DR

//10chars
Quote Originally Posted by Stellar Spark View Post
The basic ballpark goal of this project is to create an optimized, modular source that private servers will look towards using.
i think that's it

edit: not actually sure xP
Posts this at the time when I'm considering a source. Just makes me anxious and looking forward to it. Either way, hope you guys do great, saw a glimpse of your team back when I did alpha testing, was greatly impressed. Best of luck, not that you need it.
Quote Originally Posted by Luis View Post
saw a glimpse of your team back when I did alpha testing, was greatly impressed. Best of luck, not that you need it.
The Phoenix team alone will only be working on Phase 1, which is a super-short phase for transitioning our source towards a more generic position. While there are members that will continue to work on through Phase 2, I do wish to see some other people contribute within reasonable measure.
Update 1:

I set up the repository, did some basic licensing, and removed a lot of Phoenix-related things. The custom stats are gone and the custom class system has been all reverted to the SD standard.
@BlackRayquaza reorganized the XML data for some files that were changed in Phoenix.

Afterwards I started drafting up a basic custom settings system that hopefully in the end will be able to allow users to manipulate 100+ server variables without needing to touch the source. Started by giving generic naming variables to the Chat bot, the server, and Oryx (now called the Villain in the source). May consider a client-builder to reflect these changes in a plugin-esque style.
Quote Originally Posted by Stellar Spark View Post
Update 1:

I set up the repository, did some basic licensing, and removed a lot of Phoenix-related things. The custom stats are gone and the custom class system has been all reverted to the SD standard.
@BlackRayquaza reorganized the XML data for some files that were changed in Phoenix.

Afterwards I started drafting up a basic custom settings system that hopefully in the end will be able to allow users to manipulate 100+ server variables without needing to touch the source. Started by giving generic naming variables to the Chat bot, the server, and Oryx (now called the Villain in the source). May consider a client-builder to reflect these changes in a plugin-esque style.
Tiger Philanthropist confirms.
Update 2:

After breaking the source several times and fixing it, only to find new errors, I did some basic cleanup to the code grit that Phoenix left behind in halted development. @BlackRayquaza and I discussed the use of serilog, and how we might opt for that over the outdated log4net. We continued with more dead code cleanup, code style unification, and optimizations.

We haven't really touched the surface yet on what can be done for modularity, but when we get there, one of my priorities is to make content development as easy and fast as possible. However, Phase 1 is proceeding fast, and we hope to bring out our first public build soon.
I am really looking forward to this. I hope my little experience can help you guys out when it comes to phases 2 and 3. Best of luck! ^-^

Edit:
May I also recommend setting up a Discord server for discussion purposes? I feel like a discussion medium such as Discord will make it a lot easier to share ideas, get opinions, and acquire assistance from other people who are helping work on this source. It also allows for quick in-channel file sharing and voice communication.
Quote Originally Posted by SlickEashy View Post
I am really looking forward to this. I hope my little experience can help you guys out when it comes to phases 2 and 3. Best of luck! ^-^

Edit:
May I also recommend setting up a Discord server for discussion purposes? I feel like a discussion medium such as Discord will make it a lot easier to share ideas, get opinions, and acquire assistance from other people who are helping work on this source. It also allows for quick in-channel file sharing and voice communication.

Thanks! I may just consider a Discord server, although I may just have that already.
Update 3:

Some more coding, more boring structure stuff.

I got some new helper hands on the project, but since they just got acquainted with the system they haven't started yet. I've decided to help revive the RotMG Private Servers Discord server to communicate better and to organize suggestions more easily as we push towards Phase 2.

This new source will most definitely provide a remedy to some common private server "hacks" and exploits, but since it's open source it wouldn't be too hard to find new exploits. :P
Good to see progress
I remember playing around on phoenix a lot a year or maybe two ago?
Anyway, I have been away from Rotmg for a long time and I miss it. I have a lot more experience coding from taking computer science then I did back then and I would love to learn how to apply it to this project. I haven't done anything amazingly complex with rotmg yet however I am willing to learn after I write my exams (finished by next Wednesday, wish me luck). I have no use to you now and I don't expect anyone to train me, but if you want to send me in a direction where I can learn to do something helpful point me to a tutorial and I will do my very best to figure it out (it would have to be something basic as you are using variations c and I have only used python and java). I'm willing to figure it out myself but I would prefer having a location to start.
Thanks for reading, if you have any suggestions I'm happy to listen.

excited to see what you can do
would love to be a part
Posts 1–15 of 18 · Page 1 of 2

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?