Project Proposal
Hello - and welcome to my basic project overview. I have a minimalistic experience with Runescape Servers - but a wide array of experience with similar applications developed for a variety of other MMORPGs. Having said this - my main interest currently is within Runescape, and as such, I have decided to start up a project linked to Runescape as a motivation of sorts.
The aim of this project is not to produce a Runescape Server first and foremost, but to act as a learning experience for me. Through the practical development of a working Runescape Server - I will further my knowledge of not only the Engine behind one of the most popular MMORPGs, but also to further my knowledge of the inner workings of MMORPG Servers in general. Upon finishing the project - I will have gained a large amount of experience both in Java and in the Server Development aspect.
However - a project isn't that interesting when it's just about a learning experience I guess, so the utmost goal of this project is to develop a fully-functional, working Runescape Server. The server will have very similar characteristics to the Official Server - and will be entirely Open Source. I'm aiming to have all aspects of the Official Server implemented - the minigames, similar combat system, all skill training aspects working and functional. Although this may seem a far-fetched proposal, take note that this is a long term proposal and will not be undertaken lightly.
The Server will be developed using the Java programming language. It is different from others - in that it will be making use of the more modern MySQL relational database software rather than the traditional flat database files more commonly used here. Relational databases allow for greater flexibility, acclaimed faster loading times than flat file databases and generally easier readability. This, not only allows for great functionality within the server - but easier Maintenance at later stages. All code will be as well documented as deemed necessary - allowing others to easily understand each section.
Throughout the development stage, I will be tracking my progress both here - and once I reach the Implementation stage, a Subversion Repository will be setup to allow free access to the code that I've developed.
Author's Experience
As you've probably gathered by now - this is a team of one-person. The project will be developed solely by me as I feel to recruit others would not only take time to seperate the good from the bad, but it would also negate the concept of this being a learning-experience for myself.
As previously mentioned - I've already had a bit of experience within the Server development environment. I've worked on the development of a VB Emulator in the past for another MMORPG - Silkroad Online, and more recently translating it to a C++ Emulator for greater functionality and stability.
I've been programming for a while now - I am rather fluent in VB Applications, unfortunately learned in VB6, but have some experience with the .NET Framework. After learning VB, I continued to take a look at C++, realising that it was probably going to be a valuable learning experience for later projects. I can now consider myself to be of reasonable experience with C++, but in no way consider myself to be fluent. I've been learning Java for the past few months, and am rather liking the language. Based upon that, this project has been proposed.
Why here?
Although I've only recently joined Rune-Server, i've been browsing through the numerous threads created here. This community, although certain underlying aspects may seem otherwise, seems to have an array of talented coders who take the initiative to help out the community and further other's learning. Contrary to some people's beliefs that I've seen here - I believe in a practical learning approach. Giving people code to simply copy-and-paste may indeed, not help some - but I feel that those who simply duplicate code without even looking at the workings are not worth helping. However, those who this situation can prove useful to are those who see the code, analyse it, and then implement it in their own form. Certain situations call for very similar code to be implemented - but said user has still profited from the sharing of such code and as such the sharer has helped the community.
My project is based around that aspect - it is all here, not to provide Intellectual bragging rights, nor to be downcast or flamed. It is simply here as a learning-aid to help others if they feel the desire to analyse it.
I do not claim any ownership over any pieces of code I implement. Although a large variety may have been implemented by me - it is simply the logic being implemented by myself. If I was to credit myself - it would be a lie as the actual credit goes to those Software Developers, such as the developers of the JDK - that always seem to be forgotten. Any code herein can be taken, modified, distributed without any needs of credit to myself. All I ask is that you read it and try to understand it.
Progress
This project will be using the standard software development stages. Which are: Analysis, Design, Implementation, Testing, Documentation, Evaluation, Maintenance.
The Analysis has already been completed - having discussed that within the Project Proposal. For now, I'm onto the Design Stage. I will keep notes here each day - highlighting the different developments of each day.
~[30/04/09] Finished Designing the Basic Architecture of the Project.
~[01/05/09] Currently grinding my way through inserting the items into the Database. Unfortunately due to the custom nature of it all - automated scripts just don't cut it.
~[02/05/09] Continuing to populate the Items Table today. Current design plan is to have the items with generalised information in one Table titled Items, whilst having a field for 'category'. Category will link to individual category tables with more detailed information specific to those category of items.
Conclusion
Having drawn up the main project documentation for now - that being this post, the first stage of the project has been passed.
As stated previously, this project simply acts as a learning-aid for those who are interested. Others can follow my developments and comment on it if they wish - perhaps suggesting their approach to the problems I face. Through this - we can share as a community the different implementations of each programmer here, allowing us to develop a greater understanding of the language we hold at our fingertips.