-
Notifications
You must be signed in to change notification settings - Fork 11
Getting Started in Development
Note: This page is being highly worked on by Knightoffaith (edited by hrkrx)
LUNI Server is an effort to recreate the ability to play LEGO Universe by creating a server application that would function ideally the same (or very close to) the original when LU was live. The server is created using the C++ programming language in the Visual Studio 2013 development environment. This utilizes the RakNet and networking libraries, as well as SUtil and MySql for the database. To allow this to work, the original client was updated to allow for connection to the new server software, as well as the decoding of captured network packets that were gained when the game was live. This document will give some high-level explanation on the files and resources used, as well as references to be able to learn the concepts needed to get involved with development.
For more information, please see the readme.md
##Resources you’ll need
- Visual Studio 2013 (community/express will work fine)
- XAMPP or similar WAMP stack (specifically a MySQL server and the ability to set it up with the LUNI software)
- LUNI Compatable LEGO Universe client for testing (Nexus2 (Direct Download) client suggested)
##Learning Tools and Concepts (Tutorials)
###Step 1: Talking to computers (programming in C++) Tutorials on C++ can be found fairly easily, it just takes a quick Google search. If you want a quick suggestion, I would take a look at SoloLearn's tutorial, which includes videos from multiple places as well as interactive questions. Learn C++ (if text is your thing) or Bucky’s C++ Tutorials (if you like just straight YouTube videos) are also decent choices. However, do note that these do not use Visual Studio. If you want to be able to get more direct instruction with that, just search around. The .net libraries are not knowingly being used in LUNI, so it may actually be beneficial to just use one without the extra libraries, unless you’re particularly wanting to learn them. However, do know that when following along with the tutorials, you’ll need to set up your file in Visual Studio a little differently. When creating a new file, make sure to choose Win32 Console Application. Also, run using ctrl-f5 to require a key to be pressed before the console window is closed.
###Step 2: Storing information MySql is a database, which is similar to a bunch of spreadsheets which are linked together and easily accessible to read and write to by a program. To get MySQL working with the LUNI-server you need a database and the MYSQL-Connector libraries setup in the project (Linkersettings). To get the right connectionstring you may have to edit the config file (config.ini). [Placeholder for tutorial, need to find one]
###Step 3: Getting computers to talk to each other (learning about networking) So, what’s a packet, TCP, IP, ports, and all that stuff? How can computers even communicate anyhow? I’ve found a good networking video series by Microsoft.
###Step 4: Dealing With Packets [Video tutorial in progress by @Knightoffaith]
###Step 5: MMO networking with RakNet The first way you can learn is through the manual. You’ll probably want to start with the first 3 or 4 sections of the Quick Start, then move on to The Basics. Also take a look down the page in case there is something else that might be of importance or helpful to you. The RakNet source code is pretty well commented, so any other questions will almost certainly be answered in the header file for the related code. [Video tutorial in progress by @Knightoffaith]
###Step 6: Syntax for information in packet information docs Wikipedia has a good explanation of the metasyntax (how a metalanguage, which is a language about a language, is described) used, and from there you can read their definition of how they define the packet info. That’s quite a lot of meta, but it helps in understanding what’s going on. [Video tutorial in progress by @Knightoffaith]
##Structure of LUNI Server [Class diagram of program (server), data model of database, explanation of each part, and general flow of execution]
##Where to Start Developing [Todo list with items (specifically software ‘segments’ not necessarily features) to be implemented and what (fairly) specific tasks need to be accomplished in/for each]
##[How to share developments, find help, discuss, etc.]