首页 > 其他分享 >godot游戏引擎的启动

godot游戏引擎的启动

时间:2023-05-08 16:24:34浏览次数:51  
标签:godot argc return 游戏 int utf8 argv 引擎 main

启动的入口代码在:platform/windows/godot_windows.cpp

WinMain()->main()
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	godot_hinstance = hInstance;
	return main(0, nullptr);
}
main()->_main()
 int main(int argc, char **argv) {
	// override the arguments for the test handler / if symbol is provided
	// TEST_MAIN_OVERRIDE

	// _argc and _argv are ignored
	// we are going to use the WideChar version of them instead
#ifdef CRASH_HANDLER_EXCEPTION
	__try {
		return _main();
	} __except (CrashHandlerException(GetExceptionInformation())) {
		return 1;
	}
#else
	return _main();
#endif
}
_main()->Main类
 int _main() {
	result = widechar_main(argc, wc_argv);
}

int widechar_main(int argc, wchar_t **argv) {
	OS_Windows os(nullptr);

	setlocale(LC_CTYPE, "");

	char **argv_utf8 = new char *[argc];

	for (int i = 0; i < argc; ++i) {
		argv_utf8[i] = wc_to_utf8(argv[i]);
	}

	TEST_MAIN_PARAM_OVERRIDE(argc, argv_utf8)

	Error err = Main::setup(argv_utf8[0], argc - 1, &argv_utf8[1]);

	if (err != OK) {
		for (int i = 0; i < argc; ++i) {
			delete[] argv_utf8[i];
		}
		delete[] argv_utf8;

		if (err == ERR_HELP) { // Returned by --help and --version, so success.
			return 0;
		}
		return 255;
	}

	if (Main::start()) {
		os.run();
	}
	Main::cleanup();

	for (int i = 0; i < argc; ++i) {
		delete[] argv_utf8[i];
	}
	delete[] argv_utf8;

	return os.get_exit_code();
}

 

main/main.cpp

Main类的关键函数和启动时调用
/* 引擎初始化
 *
 * 由若干个methods组成,这些methonds会被平台特定 main(argc, argv)所调用.
 * 为了完整的理解引擎初始化, 需要从平台的main开始,看他是怎样调用 Main class' methods的.
 *
 * 典型的初始化过程分3步构成 (其中setup2这步可以由setup自动触发,也可以在平台的main中手动触发).
 *
 * - setup(execpath, argc, argv, p_second_phase) 是所有平台的主入口点,
 *   负责所有底层singletons and core types 的初始化,并且解析cmd参数并进行配置。
 *   如果 p_second_phase 为 true, 将会接下来执行 setup2() (default behavior). 这个过程在某些平台(Android, iOS, UWP)
 *   是disabled,在他们自己运行时触发。
 *
 * - setup2(p_main_tid_override) registers high level servers and singletons, displays the
 *   boot splash, then registers higher level types (scene, editor, etc.).
 *
 * - start()是最后一步,也是cmd工具开始运行的地方,main loop 最终被创建,系统的设置也放入执行,这里也是editor node创建的地方.
 *   如果需要 start()会处理命令行参数的子参数, 这个很麻烦需要setup()进行全局的解析。
 */
Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_phase) {}

 

标签:godot,argc,return,游戏,int,utf8,argv,引擎,main
From: https://www.cnblogs.com/riveruns/p/17382169.html

相关文章

  • 极光笔记 | 极光推出“运营增长”解决方案,开启企业增长新引擎
    摘要:移动互联网流量红利见底,营销获客面临更多挑战随着移动互联网流量红利见顶,越来越多的企业客户发现获取新客户的难度直线上升,获客成本持续攀高。传统的移动互联网营销以PUSH为代表,采用简单粗暴的方式给用户进行推送就可以获客的时代已经成为过去式;与此同时,企业营收中的“二八效应......
  • 极光笔记 | 极光推出“运营增长”解决方案,开启企业增长新引擎
    摘要:移动互联网流量红利见底,营销获客面临更多挑战随着移动互联网流量红利见顶,越来越多的企业客户发现获取新客户的难度直线上升,获客成本持续攀高。传统的移动互联网营销以PUSH为代表,采用简单粗暴的方式给用户进行推送就可以获客的时代已经成为过去式;与此同时,企业营收中的“二八......
  • 仙境传说RO H5游戏详细图文架设教程
    前言还记得萌萌的波利么,对就是天天打波利的那个波利--,这次给大家带来了一款非常精美的休闲H5游戏仙境传说ROH5。满级VIP,爆表战力,各种好看的时装、坐骑、翅膀、宠物就在仙境传说ROH5!本文讲解仙境传说RO架设教程,想研究H5游戏如何实现,体验游戏中秒天秒地秒空气的一定不要......
  • windows游戏全屏的各种奇葩姿势
    1.改小系统分辨率,这会导致切出其他窗口时闪烁半天;AltEnter不管用,全屏后无视其他TopMost的窗口,Child内置窗口管用;若要全屏需关闭系统缩放否则全屏超出显示边界。ぜったい征服☆学園結社パニャニャンダー!!......
  • Java游戏任务背包系统设计思路
    前言在游戏开发中,游戏任务系统是必不可少的,因为任务系统是游戏的驱动,是使玩家能坚持玩下去的途径之一,也是玩家的目标。任务大体分为三块,玩家接受任务--进行任务--任务完成获得奖励。这里面包括两个系统,任务系统和背包系统,因为玩家获得的奖励需要落到玩家自己的背包里。所以我们......
  • (libgdx小结)window(游戏对话框的使用)
    packagecom.example.groupactiontest;importcom.badlogic.gdx.ApplicationListener;importcom.badlogic.gdx.Gdx;importcom.badlogic.gdx.graphics.GL10;importcom.badlogic.gdx.graphics.Texture;importcom.badlogic.gdx.graphics.g2d.BitmapFont;importcom.ba......
  • 猜数字游戏
    1、电脑生成一个随机数2、猜数字#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<time.h>#include<stdlib.h>voidmenu(){ printf("******************************"); printf("***1.PLAY0.EXIT*****"); printf("......
  • 分析游戏中的金钱交易:Multi-view Attention Networks
    文章目录1.摘要2.引入3.游戏数据描述3.1逆水寒中的游戏日志3.2社交图分析3.3行为序列3.4角色属性构造4.MVAN模型4.1multi-graphattentionnetwork4.2behaviourattentionnetwork4.3behaviourattentionnetwork4.4DataSourceAttentionNetwork5.模型效果5.1baseline......
  • C/C++猜数字游戏[2023-05-06]
    C/C++猜数字游戏[2023-05-06]题目8:猜数字游戏软件题目描述设计一个猜数字游戏软件,该程序具有以下功能:(1)游戏区:玩家在此开始游戏,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的个数,以及数值正确但位置不正确的个数。(2)刷新排行榜:当玩家成功完成一轮猜数字游戏后......
  • 解密Elasticsearch:深入探究这款搜索和分析引擎
    作者:京东保险 管顺利开篇最近使用Elasticsearch实现画像系统,实现的dmp的数据中台能力。同时调研了竞品的架构选型。以及重温了redis原理等。特此做一次es的总结和回顾。网上没看到有人用Elasticsearch来完成画像的。我来做第一次尝试。背景说完,我们先思考一件事,使用内存系统做......