C++ to webpage communication for RakNet

Виконано Опубліковано %project.relative_time Оплачується при отриманні
Виконано Оплачується при отриманні

We wish to add a feature to the game network engine RakNet ( [url removed, login to view] ) that allows users to view on the web the status of game servers, where the game servers are written in cross-platform C++.

Your job would be to write web, and as necessary C++, code such that the games can upload their status to the webpage. The webpage would then list all running games, along with stats on each game. Should a game not update its status for over some time threshold, the game should be removed from the list.

## Deliverables

We wish to add a feature to the game network engine RakNet ( [url removed, login to view] ) that allows users to view on the web the status of game servers, where the game servers are written in cross-platform C++.

Your job would be to write web, and as necessary C++, code such that the games can upload their status to the webpage. The webpage would then list all running games, along with stats on each game. Should a game not update its status for over some time threshold, the game should be removed from the list.

This will likely require database, webpage, and C++ programming, all of which are the responsibility of the coder. If it is necessary to setup a database schema, the coder is also responsible for designing the webpage to detect if the required schema exists, and if not, to show an installation page that will install whatever is needed before proceeding. All reasonable values such as the database name should be configurable by the user via forms in the webpage itself, with sensible defaults. Failure should show clear error messages, both indicating what the problem is, and how to fix it. It is not acceptable to require the user to edit code or configuration files to get the webpage to work. Whatever data is needed should be entered through the webpage itself, with sensible defaults.

The webpage language to use is up to the coder, however whatever is chosen must already be in widespread distribution (over 90% of shared web hosts having it preinstalled). The user must not be required to setup or install programs on the webhost, other than uploading required files via FTP and setting permissions.

The C++ code is responsible for connecting to the website and uploading a status string.

Application flow:

1. End-user uses TCPInterface class to connect to webhost, for example tcpInterface->Connect("[url removed, login to view]", 80);

2. End-user passes connected instance of TCPInterface to a new class HTTPInterface, along with the SystemAddress structure indicating the IP address of the webhost. Alternatively, if necessary, the HTTPInterface class can perform the connection sequence, using a passed instance of TCPInterface.

3. End-user will call a function to pass a string to the webhost that updates the page appropriately. For example "ServerName=MyServer, NumPlayers=10,Timeout=300". Strings must be parsed appropriately for security, in order to prevent SQL injection attacks or other security risks. End-user will repeatedly call this function within some predetermined time threshhold as a keep-alive. It is acceptable to predefine column names, such as "Timeout" to indicate timeout in seconds. Whatever predefined columns names exist should be clearly indicated in a separate documentation HTML file. Predefined columns names shall be prefixed appropriately so as not to cause name conflicts with columns end-users may wish to use.

4. On receipt of a string passed in step 3, web server should lookup sender by IP address if possible. Only if this is not possible should the sender be required to upload a unique status string as an identifier. If this sender does not exist, add them to the list of servers, along with parsed data, and update the timeout passed via the command string. If this sender does exist, update the current data, and update the timeout

5. On the web server, should the timeout elapse, it may be assumed that the C++ server crashed, and the server should be delisted from the webpage.

6. The C++ code should also be able to send a shutdown command to the webpage, to signal normal termination. The webpage should handle this and remove the listing as appropriate.

Webpage additional requirements:

1. Webpage must be friendly and easily configurable for non-technical users. All reasonable means should be taken to automatically resolve errors that come up. Where not possible, the webpage must indicate what the error is, why it exists, and what steps to take to fix it.

2. Webpage must by default include and display the RakNet logo, found at [url removed, login to view]

3. Webpage shall take a password on installation to prevent unauthorized updates.

C++ Additional requirements:

1. Programming language must be C++, using only the C standard libraries, and code already included as part of RakNet.

2. No third party code or libraries without prior permission

3. Use the class TCPInterface found in Source/TCPInterface.h and Source/[url removed, login to view] to communicate with the web server, unless prior permission is given to use something else.

4. Code must be performance optimized such that a game can run at the same time with no significant loss of framerate. In general, this means no blocking calls, tight loops to wait on remote messages, etc. The TCPInterface class that comes with RakNet is already non-blocking, so would be an acceptable solution.

5. C++ code must be modular, encapsulated, and stand-alone.

6. C++ code must conform to style, documentation, and coding conventions found throughout RakNet. This includes, but is not limited to: No Hungarian notation, DOxygen style comments, comments for every function, including input, return, and descriptions.

7. Every variable and function must be documented as to both what it does, and why it is there.

8. Coder must not introduce memory leaks. Coder agrees that any unexcused memory leaks is 100% project failure.

All code, database lookups, etc. should be written with performance in mind. This is especially critical for C++ code, but applies generally.

Програмування на С Техніка MySQL PHP Управління проектом Архітектура ПЗ Тестування ПЗ Веб-хостинг Управління веб-сайтами Тестування сайтів

ID Проекту: #3872532

Про проект

3 заявок(-ки) Дистанційний проект Остання активність Apr 16, 2008

Доручено:

devinbayer

See private message.

$850 USD за 14 дні(-в)
(14 відгуків(-и))
5.2

3 фрілансерів(-и) готові виконати цю роботу у середньому за $793

canlevw

See private message.

$850 USD за 14 дні(-в)
(55 відгуків(и))
6.8
KaoreSF

See private message.

$680 USD за 14 дні(-в)
(1 відгук)
1.3