سب کو سلام. آج ہم دیکھیں گے کہ اینڈرائیڈ پر گیم چلانے کے لیے sdl2 لائبریری کا استعمال کرتے ہوئے پروجیکٹ کیسے تیار کیا جائے۔
پہلے آپ کو اینڈرائیڈ اسٹوڈیو کو ڈاؤن لوڈ کرنے، اسے انسٹال کرنے اور اس ترقیاتی ماحول میں درکار ہر چیز کی ضرورت ہے۔ مثال کے طور پر، اب میرے پاس Kde Neon ہے، اور اس سسٹم پر ایک فائل ہے /etc/environment، وہی فائل اوبنٹو میں موجود ہے۔ مندرجہ ذیل متغیرات کو وہاں داخل کرنے کی ضرورت ہے۔
ANDROID_HOME=/home/username/Android/Sdk
ANDROID_NDK_HOME=/home/username/ndk
آپ کو سرکاری ویب سائٹ سے NDK ڈاؤن لوڈ کرنے کی بھی ضرورت ہے، اسے اپنی ہوم ڈائرکٹری میں کھولیں اور اسے NDK کا نام دیں۔ اس کے بعد آپ کو ویب سائٹ سے 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 کو ترتیب دیں۔ میرے گیتھب سے ڈاؤن لوڈ کریں۔
ماخذ: www.habr.com