SDL遊戲之路(一)--多平臺支持--windows

第一章:多平臺支持。


2014打算先寫一個遊戲框架,然後通過這個框架再寫遊戲。

本人自學,如有誤導,請讀者見諒。


想法:

現在的操作系統很多,寫一款遊戲要在多個平臺上運行應該是一個樸素的需求。


本文接下來將介紹如何在 window,wp8,android,mac,ios,linux 上創建一個項目,而遊戲代碼都是共用的。


除了wp8使用微軟的框架外,其他都將集成SDL做開發。


遊戲常見的邏輯:

while(true){

doEvent()

show()

}


本實例的實際代碼:

int main(int argc, char *argv[]) {
	//遊戲引擎初始化
	int iRet = g_SkComm.init();
	if (iRet != 0) {
		g_SkComm.log("[%s][%d]g_SkComm.init!=0\n", __FILE__, __LINE__);
		exit(0);
	}
	//顯示模塊初始化
	g_SkShow.init(g_SkComm.getRenderer());
	Sint64 siGameBegin = g_SkGameTimer.getGameMTime();
	g_SkGameTimer.m_siGameLastTime = siGameBegin;
	g_SkGameThread.run(g_SkGameTimer.m_siGameLastTime);
	Sint64 siShowBegin = siGameBegin;
    //g_SkComm.msleep(3000);
	//g_SkComm.myexit();
	while (true) {
		SkEvent event;
		while (g_SkComm.poll_event(&event)) {
			g_SkGame.doEvent(&event);
		}
		Sint64 iCurTime = g_SkGameTimer.getGameMTime();
		while (g_SkGameTimer.m_siGameLastTime + g_SkGameTimer.siGameLoopMsec
				< iCurTime) {
			g_SkGameTimer.m_siGameLastTime += g_SkGameTimer.siGameLoopMsec;
			g_SkGameThread.run(g_SkGameTimer.m_siGameLastTime);
		}
		bool bShow = true;
		while (siShowBegin + g_SkGameTimer.siShowLoopMsec < iCurTime) {
			siShowBegin += g_SkGameTimer.siShowLoopMsec;
			if (bShow) {
				g_SkGame.show(&g_SkShow);
				g_SkShow.flush();
				bShow = false;
			}
		}
		//g_SkComm.log("[%s][%d]\n", __FILE__, __LINE__);
		g_SkComm.msleep(SkGameTimer::siGameManLoopMsec);
	}
	g_SkComm.myexit();
	return 0;
}


爲了實現平臺兼容,我將SDL的調用做了下封裝。這樣以後不使用SDL,那麼遊戲代碼也是可以複用的。


windows平臺的支持:

1.首先用eclipse創建一個android的遊戲項目。(可以參看我前面的文章)

2.遊戲目錄結構如下:

遊戲主函數放在 jni\src 目錄下

3.創建一個windows目錄,用來放在window平臺下編譯的相關文件。

4.windows 目錄下創建一個Makefile文件,類似

INC=-I../jni/src -I../jni/sk_include -I../jni/SDL/include -I../jni/SDL_image -I../jni/SDL_net -I../jni/SDL_ttf
SRC=../jni/src/*.cpp ../jni/sk_src/*.cpp ../jni/sk_game/*.cpp
LIB=-L./lib -lmingw32 -lSDL2_net -lSDL2_mixer -lSDL2_ttf -lSDL2_image -lSDL2 -lSDL2main 

all:
	g++ -D__SKYPARK_WIN__ -Wall -O2 -o SkyparkGame.exe $(SRC) $(INC) $(LIB)
clean:
	rm SkyparkGame.exe

5.下載安裝mingw

6.編譯運行

7.效果



等多平臺都完成了,附上代碼。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章