Kirill Lanskoy Asked:2024-07-28 13:42:30 +0000 UTC2024-07-28 13:42:30 +0000 UTC 2024-07-28 13:42:30 +0000 UTC 如何在没有游戏引擎的情况下用 C++ 为 Android 或 WEB 编写 2D 游戏? [关闭] 772 我想用 C++ 创建一个适用于 Android 或 WEB 的 2D 游戏,而不需要 UE 等游戏引擎。 我试图查找信息,但每次查找都太模糊,我不明白该怎么做,所以我在这里询问我应该使用哪些库等? c++ 1 个回答 Voted Best Answer Matvj 2024-07-28T15:12:42Z2024-07-28T15:12:42Z 您应该已经有一个现成的游戏项目。 首先,您需要下载 Android Studio,安装它以及此开发环境中所需的所有内容。例如,我现在有 Kde Neon,在这个系统上有一个文件 /etc/environment,相同的文件也存在于 ubuntu 中。需要在那里输入以下变量。 ANDROID_HOME=/home/用户名/Android/Sdk ANDROID_NDK_HOME=/home/用户名/ndk 您还需要从官网下载NDK,将其解压到您的主目录中并重命名为NDK。接下来,您需要从 libsdl.org 下载 SDL2 库。要在 android 上使用 sdl2,重要的是不要为计算机编译它,因为那样它就不会为 android 编译。为了使项目能够编译,您需要在android studio中创建一个项目,任何一个,接受许可证,否则SDL2在构建时会要求许可证。 要从资源中读取android中的文件,您需要使用SDL_RWops函数。以下是在代码中使用字体的示例。在这种情况下,我们不能使用FT_New_Face,而是使用FT_New_Memory_Face来使用已经读取的数据。 #ifdef __ANDROID__ snprintf ( path, 254, "fonts/%s", file ); SDL_RWops *rw = SDL_RWFromFile(path, "r" ); char *memory = ( char * ) calloc ( rw->hidden.androidio.size, 1 ); SDL_RWread(rw, memory, 1, rw->hidden.androidio.size ); FT_New_Memory_Face(*this->ft_library, ( const FT_Byte * )memory, rw->hidden.androidio.size, 0, &this;->face ); SDL_RWclose(rw); free ( memory ); #else snprintf ( path, 254, "%s/fonts/%s", DEFAULT_ASSETS, file ); if ( access ( path, F_OK ) ) { fprintf ( stderr, "not found font: %s\n", path ); exit ( EXIT_FAILURE ); } struct stat st; stat ( path, &st; ); FILE *rw = fopen ( path, "r" ); char *memory = ( char * ) calloc ( st.st_size, 1 ); fread ( memory, 1, st.st_size, rw ); FT_New_Memory_Face ( *this->ft_library, ( const FT_Byte * ) memory, st.st_size, 0, &this;->face ); fclose ( rw ); free ( memory ); #endif 您还需要创建一个头文件来连接 SDL2 头文件。要在 Android 上成功编译,需要 NO_SDL_GLEXT。 #ifdef __ANDROID__ #include "SDL.h" #include "SDL_video.h" #include "SDL_events.h" #define NO_SDL_GLEXT #include "SDL_opengl.h" #include "SDL_opengles2.h" #else #include <SDL2/SDL.h> #include <SDL2/SDL_video.h> #include <SDL2/SDL_opengl.h> #include <SDL2/SDL_opengles2.h> #endif 项目已准备就绪,着色器已准备好用于 Opengl Es 3.0。现在我们需要创建一个 android 项目。为此,请解压缩 SDL2 存档。转到构建脚本。我们就是这样做的。 ./androidbuild.sh com.xverizex.test main.cpp 将出现以下消息: To build and install to a device for testing, run the following: cd /home/cf/programs/SDL2-2.0.10/build/com.xverizex.test ./gradlew installDebug 转到 com.xverizex.test/app/jni/src。我们复制游戏项目并更改 Android.mk 文件,在我的例子中,它看起来像这样: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main SDL_PATH := ../SDL FREETYPE_PATH := ../Freetype2 LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include $(LOCAL_PATH)/$(FREETYPE_PATH)/include # Add your application source files here... LOCAL_SRC_FILES := ./engine/lang.cpp ./engine/actor.cpp ./engine/sprite.cpp ./engine/shaders.cpp ./engine/box.cpp ./engine/menubox.cpp ./engine/load_manager.cpp ./engine/main.cpp ./engine/font.cpp ./engine/model.cpp ./engine/button.cpp ./theme.cpp ./level_manager.cpp ./menu/menu.cpp LOCAL_SHARED_LIBRARIES := SDL2 Freetype2 LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog include $(BUILD_SHARED_LIBRARY) 现在让我们为 Android 配置 Freetype2。从https://github.com/xverizex/Android-Freetype2下载,并将 Freetype2 目录复制到 app/jni/ 目录中。一切准备就绪。 现在在 com.xverizex.test 中运行命令 ./gradlew installDebug。为了能够将此游戏添加到 Android,必须在 Android 中启用调试。为此,您需要进入设置,进入“系统”,进入“关于平板电脑”,然后单击“内部版本号”选项大约六次。然后返回,就会出现开发者的选项。进去打开它,同时打开“USB调试”选项。现在您需要获取平板电脑的密钥。为此,请安装 adb 程序。我们在控制台中启动 adb shell,平板电脑中会出现一个必须接受的密钥。就是这样,现在可以将游戏下载到您的平板电脑上。
您应该已经有一个现成的游戏项目。
首先,您需要下载 Android Studio,安装它以及此开发环境中所需的所有内容。例如,我现在有 Kde Neon,在这个系统上有一个文件 /etc/environment,相同的文件也存在于 ubuntu 中。需要在那里输入以下变量。
ANDROID_HOME=/home/用户名/Android/Sdk ANDROID_NDK_HOME=/home/用户名/ndk
您还需要从官网下载NDK,将其解压到您的主目录中并重命名为NDK。接下来,您需要从 libsdl.org 下载 SDL2 库。要在 android 上使用 sdl2,重要的是不要为计算机编译它,因为那样它就不会为 android 编译。为了使项目能够编译,您需要在android studio中创建一个项目,任何一个,接受许可证,否则SDL2在构建时会要求许可证。
要从资源中读取android中的文件,您需要使用SDL_RWops函数。以下是在代码中使用字体的示例。在这种情况下,我们不能使用FT_New_Face,而是使用FT_New_Memory_Face来使用已经读取的数据。
您还需要创建一个头文件来连接 SDL2 头文件。要在 Android 上成功编译,需要 NO_SDL_GLEXT。
项目已准备就绪,着色器已准备好用于 Opengl Es 3.0。现在我们需要创建一个 android 项目。为此,请解压缩 SDL2 存档。转到构建脚本。我们就是这样做的。
将出现以下消息:
转到 com.xverizex.test/app/jni/src。我们复制游戏项目并更改 Android.mk 文件,在我的例子中,它看起来像这样:
现在让我们为 Android 配置 Freetype2。从https://github.com/xverizex/Android-Freetype2下载,并将 Freetype2 目录复制到 app/jni/ 目录中。一切准备就绪。
现在在 com.xverizex.test 中运行命令 ./gradlew installDebug。为了能够将此游戏添加到 Android,必须在 Android 中启用调试。为此,您需要进入设置,进入“系统”,进入“关于平板电脑”,然后单击“内部版本号”选项大约六次。然后返回,就会出现开发者的选项。进去打开它,同时打开“USB调试”选项。现在您需要获取平板电脑的密钥。为此,请安装 adb 程序。我们在控制台中启动 adb shell,平板电脑中会出现一个必须接受的密钥。就是这样,现在可以将游戏下载到您的平板电脑上。