0

mmorpg ゲームを作成したいのですが、始める前にいくつか知りたいことがありまし
た。まず第一に、Android 用のゲームを作成する方法を知っていて、canvas、opengl es 1.0/1.1、およびいくつかの andengine(opengl も使用) を使用しています。 es 1.0/1.1)。信頼性が高く高速な mmorpg を使用するために何を使用すればよいか知りたいのですが、パフォーマンスを向上させるための他のオプションはありますか?

現時点では、このゲームは Android のみを対象としています。私は Android SDK と Eclipse を使用してゲームをプログラムしています。

また、適切なクライアントとサーバーを作成する方法はどこで学べますか? 私はそれを経験したことがないからです。今まで私は 2D といくつかの 3D ゲームしか作ったことがなく、オンラインや MMO のようなものはありませんでした。

必要に応じて、ウェブサイトの開発でSQLとPHPの経験も持っています。私は自分のウェブサイトで PhpMyAdmin を使用していました。

ありがとう!

4

2 に答える 2

5

NDKを使用する必要があると思います。プロジェクト管理を容易にするために、C++ ではなくCでプログラムを記述します。非同期リクエスト処理にはlibeventの使用を検討する必要があります。WebインターフェイスにPHP を使用しないでください。現時点では、 Pythonの方がはるかに優れています。汚れても構わない場合は C が最適なソリューションです。

ソケットの開発には、業界標準であるPOSIXソケットを使用する必要があります。後で、 ZeroMQなどのより高度なソリューションを確認する必要があります。要件に応じてPostgreSQL /* MongoDB *を使用します。これらは非常に高度なデータベース管理システムであり、たとえば MySQL よりもオーバーホールが少なくて済みます。私は、MongoDBの方がこの目的により適していると思います。MongoDB の方が高速ですが、ACID データを完全にサポートしていません。

オンライン/オフラインのドキュメント ベースのMAN ページで、ソケット プログラミングに必要なものを学ぶ必要があります。それほど難しくありません。これは Cでのサーバーの例です。それを調べて、独自のクライアント実装を作成してみてください。TCP/IP パケットの抽象化の基本原理を理解してください (ちなみに、これは TCP ソケットです。UDP の例を確認してください。これらはもっとたくさんあります)プロジェクトに関連します):

/*
"Arch_server" - a basic server program in C
Copyright © Juozas Domarkas 2012, all rights served
*/

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <strings.h>
#include <unistd.h>

void respond(int socket);

void error(char *msg)
{
    perror(msg);
    exit(1);
}

int main
(int argc, char *argv[])
{
    int socket_server_fd, socket_client_fd, pid;
    socklen_t client_address_length;
    struct sockaddr_in server_address, client_address;

    if (argc != 3)
        error("Correct usage: server [host] [port]\n");

    socket_server_fd = socket(AF_INET, SOCK_STREAM, 0);

    bzero(&server_address, sizeof(server_address));
    server_address.sin_family = AF_INET;
    server_address.sin_addr.s_addr = INADDR_ANY;
    server_address.sin_port = htons(atoi(argv[2]));

    bind(socket_server_fd, (const struct sockaddr *) &server_address, sizeof(server_address));

    listen(socket_server_fd, 16);
    client_address_length = sizeof(client_address);

    while (1) {
        socket_client_fd = accept(socket_server_fd, (struct sockaddr *) &client_address, &client_address_length);
        pid = fork();
        if (pid == 0) {
            close(socket_server_fd);
            respond(socket_client_fd);
            exit(0);
        }
    }

    return EXIT_SUCCESS;
}

void respond
(int socket)
{
    int n;
    char buffer[1024];

    bzero(buffer, 1024);
    n = recv(socket, buffer, 1023, 0);
    if (n < 0) error("ERROR reading from socket");
    printf("Here is the message: %s\n", buffer);
    n = send(socket,"Message received.", 17, 0);
    if (n < 0) error("ERROR writing to socket");
}

経験に応じて、サーバー スイートを作成するか、既存のソリューションを使用する必要があります。適切な期限 (たとえば8 か月) を自分に与えて、すべての「高レベル」ツールを自分で作成することをお勧めします。そうすれば、プロジェクトを最大限に活用できます。できるだけ基本的なものを書くようにしてください。低レベルの既存のソリューションを使用してパフォーマンスを向上させ、それらを研究し、31337 h2x0r5 から何かを学びます。

GL/ES の代わりに OGRE 3D を必ずチェックしてください。OpenGL の抽象化ライブラリです。OpenGL よりもはるかに簡単で、最新の 3D 開発、ライブラリ、プラグイン、あらゆる種類の既に開発されているパーティクル、ロコモーション、空/水システムのサポートが向上しています。

Unity3D のようなものには行かないでください。あなたにはもっと良いことがあります。


真の C プログラミングを学ぶのに最適な本は、 Dennis M. RitchieBrian W. Kernighanによる「 C プログラミング言語」です。

Google には、NDK に関する Android 開発用のチュートリアルがたくさんあります。必ず NDK を使用してください。Java は 3D グラフィックスを適切にサポートしていますが、実際にはこの仕事に適したツールではありません。これは「ニッチな」ソリューションであり、業界で受け入れられているゲーム開発の標準ではありません。それに関して、業界はゲーム開発に C++ を使用しています。製品ライフサイクル全体で 1 つの言語を使用することを強くお勧めします。ネットワーク サーバー、データベース インターフェイス、フックが必要です... C を使用します。C++ ではオーバーホールが多すぎます。BOOST や STL など、C++ に付属するその他すべてのがらくたを学習することになります。C、libevent、OGRE 3D、いくつかの既存の OGRE システムを使用することをお勧めします。これらのプロジェクトはすべて、しっかりしたドキュメントを備えており、プライムタイムで使用する準備ができています。

Ogre3Dは 3D ゲーム向けです。それを使って「2Dプラットフォーム」ゲームを作ることができます。1 つの余分な次元は、実際にはそれほど多くを学ぶ必要はありません。

各プラットフォームを 1 つずつ学習します。「オールインワン」の本を読まないでください。

これらのプロジェクトのドキュメントを確認してください。


自由な時間がたくさんあるので、まず自分で良い計画を立ててください。ひとつの方法で自分自身、自分の考えを整理し、「目標」に到達しようとします。MMO を 4 ~ 5 年で完成させるのは現実的です。それは、主にプロ、時にはインディーズでさえかかる時間です.

粘り強く、毎日何か新しいことを学び、毎日コードを書くようにしてください。1 つの目標、つまりゲームに向けて取り組みます。他のプロジェクトが発生した場合は、延期してください。実用的なプログラマーになりましょう。汚れることを恐れないでください。タイトルのために月に数日休みを取ってください。学校には行かないでください(落とさないでください!!!)。しつこい。


私はこれを行うのは嫌いですが、コンパイラ、ツール、プラットフォーム、言語を選択することは純粋な政治です。Linus Torvalds と同じように、私は「仕事に最適なツール」を好みます。私は主にオープンソース ソフトウェアを使用しています。「GPL」対「BSD」、または制限的対許容的ソフトウェア ライセンスに関して言えば、私は間違いなく BSD を選択します。単純に、「社会的に自由」ではなく、フリー ソフトウェアを信じるからです。

私の意見では、優れたコンパイラは、Apple の LLVM コンパイラ コレクションのCLANGです。

于 2012-05-13T11:35:12.673 に答える
0

mmorpg サーバーを作成するには、アクション ゲームを参照しないプロジェクトの場合、Kraken フレームワークを使用できます。でインストールしgem install krakenlab、でこれを開始しkraken -n app_nameます。

于 2017-12-28T23:19:41.200 に答える