اینڈرائیڈ پر چلنے کے لیے SDL2 پروجیکٹ کی تیاری

سب کو سلام. آج ہم دیکھیں گے کہ اینڈرائیڈ پر گیم چلانے کے لیے sdl2 لائبریری کا استعمال کرتے ہوئے پروجیکٹ کیسے تیار کیا جائے۔

پہلے آپ کو اینڈرائیڈ اسٹوڈیو کو ڈاؤن لوڈ کرنے، اسے انسٹال کرنے اور اس ترقیاتی ماحول میں درکار ہر چیز کی ضرورت ہے۔ مثال کے طور پر، اب میرے پاس Kde Neon ہے، اور اس سسٹم پر ایک فائل ہے /etc/environment، وہی فائل اوبنٹو میں موجود ہے۔ مندرجہ ذیل متغیرات کو وہاں داخل کرنے کی ضرورت ہے۔

ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk

آپ کو سرکاری ویب سائٹ سے NDK ڈاؤن لوڈ کرنے کی بھی ضرورت ہے، اسے اپنی ہوم ڈائرکٹری میں کھولیں اور اسے NDK کا نام دیں۔ اس کے بعد آپ کو ویب سائٹ سے SDL2 لائبریری ڈاؤن لوڈ کرنے کی ضرورت ہے۔ libsdl.org. android کے لیے sdl2 استعمال کرنے کے لیے، یہ ضروری ہے کہ اسے کمپیوٹر کے لیے مرتب نہ کیا جائے، کیونکہ اس کے بعد یہ android کے لیے مرتب نہیں ہوگا۔ پروجیکٹ کو مرتب کرنے کے لیے، آپ کو لائسنس کو قبول کرنے کے لیے اینڈرائیڈ اسٹوڈیو میں ایک پروجیکٹ بنانا ہوگا، بصورت دیگر 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: %sn", 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 ہیڈر کو جوڑنے کے لیے ایک ہیڈر فائل بھی بنائی ہے۔ 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 کے لیے تیار ہیں۔ اب ہمیں ایک اینڈرائیڈ پروجیکٹ بنانے کی ضرورت ہے۔ ایسا کرنے کے لیے، 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 پر جائیں۔ 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)

جیسا کہ آپ نے پہلے ہی محسوس کیا ہوگا، میں Freetype2 لائبریری بھی شامل کرتا ہوں۔ مجھے اینڈرائیڈ کے لیے گیتھب پر ایک ریڈی میڈ ملا، لیکن اس نے کام نہیں کیا، مجھے کچھ تبدیل کرنے کی ضرورت ہے۔ ہم ایک ڈائرکٹری ایپ/src/main/assets بھی بناتے ہیں۔ ہم اس میں اپنے وسائل رکھتے ہیں (فونٹس، اسپرائٹس، 3D ماڈل)۔

اب آئیے Android کے لیے Freetype2 کو ترتیب دیں۔ میرے گیتھب سے ڈاؤن لوڈ کریں۔ لنک، اور Freetype2 ڈائرکٹری کو app/jni/ ڈائریکٹری میں کاپی کریں۔ سب تیار ہے۔ اب com.xverizex.test میں ./gradlew installDebug کمانڈ چلائیں۔ اس گیم کو اینڈرائیڈ میں شامل کرنے کے لیے، اینڈرائیڈ میں ڈیبگنگ کا فعال ہونا ضروری ہے۔ ایسا کرنے کے لیے، آپ کو سیٹنگز میں جانا ہوگا، "سسٹم" پر جانا ہوگا، "اباؤٹ ٹیبلیٹ" پر جانا ہوگا اور تقریباً چھ بار "بلڈ نمبر" آپشن پر کلک کرنا ہوگا۔ پھر واپس جائیں اور ڈویلپرز کے لیے آپشن ظاہر ہوگا۔ اندر جائیں اور اسے آن کریں، "USB ڈیبگنگ" آپشن کو بھی آن کریں۔ اب آپ کو گولی کے لیے ایک کلید حاصل کرنے کی ضرورت ہے۔ ایسا کرنے کے لیے، adb پروگرام انسٹال کریں۔ ہم کنسول میں adb شیل لانچ کرتے ہیں، اور ٹیبلیٹ میں ایک کلید ظاہر ہوتی ہے جسے قبول کرنا ضروری ہے۔ بس، اب گیمز کو آپ کے ٹیبلیٹ پر ڈاؤن لوڈ کیا جا سکتا ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں