cgame游戏逻辑部分

cgame游戏逻辑部分

quake3的代码烦乱,我自己的水平又不到家,导致我自己写出的代码也是乱七八糟,但是我看了一下,

改动写好根本上太难了

先初始化了渲染器,音频视频,操作,网络之后

clintgame

客户端游戏游戏逻辑部分

这个部分根本没有固定的顺序的,我根据一般玩游戏的过程来写的,其实引擎中从3d的场景退出,显示2d的ui,只不过是状态的切换而已,根本没有任何的顺序了者也


cgame部分

/*

-----------------------------------------------------

cgame开始部分

-----------------------------------------------

*/





main部分的处理者也



初始化部分

加载配置文件



这个cvar配置文件这个从中提取到了各种配置,

cvar记录了整个游戏的各项参数



更新这个cvar的处理,这个使得变量的遍历更好者也


每一帧生成了这个渲染命令来进行这个这个对于局部的这个entity的操作者也

还有对于这个引擎运行过程中的这个日志和这个其他的一些东西者也

vmCvar_t *vmCvar;

char *cvarName;

char *defaultString;

int cvarFlags;



}cvarTable_t;



这个cvar这个变量这个东西保存了关于quake3的设置者也

例如

cgame的各项的配置文件的东西的一个处理了

控制台命令

{ &cg_ignore, "cg_ignore", "0", 0 }, // used for debugging

{ &cg_autoswitch, "cg_autoswitch", "1", CVAR_ARCHIVE },

{ &cg_drawGun, "cg_drawGun", "1", CVAR_ARCHIVE },

     //  画枪支的显示位置

        { &cg_zoomFov, "cg_zoomfov", "22.5", CVAR_ARCHIVE },

{ &cg_fov, "cg_fov", "90", CVAR_ARCHIVE },

       { &cg_viewsize, "cg_viewsize", "100", CVAR_ARCHIVE },

{ &cg_stereoSeparation, "cg_stereoSeparation", "0.4", CVAR_ARCHIVE },

{ &cg_shadows, "cg_shadows", "1", CVAR_ARCHIVE },

{ &cg_gibs, "cg_gibs", "1", CVAR_ARCHIVE },


这些乃是画出来最最基本的函数了,很多是ui,hud所要调用的函数了

{ &cg_draw2D, "cg_draw2D", "1", CVAR_ARCHIVE },

//画2d

{ &cg_drawStatus, "cg_drawStatus", "1", CVAR_ARCHIVE },

{ &cg_drawTimer, "cg_drawTimer", "0", CVAR_ARCHIVE },

{ &cg_drawFPS, "cg_drawFPS", "0", CVAR_ARCHIVE },

{ &cg_drawSnapshot, "cg_drawSnapshot", "0", CVAR_ARCHIVE },

{ &cg_draw3dIcons, "cg_draw3dIcons", "1", CVAR_ARCHIVE },

{ &cg_drawIcons, "cg_drawIcons", "1", CVAR_ARCHIVE },

{ &cg_drawAmmoWarning, "cg_drawAmmoWarning", "1", CVAR_ARCHIVE },

//这个弹药耗尽等等的警告

{ &cg_drawAttacker, "cg_drawAttacker", "1", CVAR_ARCHIVE },

{ &cg_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE },


//画出了十字的函数,这个枪口的标志

        { &cg_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE },

{ &cg_drawRewards, "cg_drawRewards", "1", CVAR_ARCHIVE },

{ &cg_crosshairSize, "cg_crosshairSize", "24", CVAR_ARCHIVE },

十字的尺寸

{ &cg_crosshairHealth, "cg_crosshairHealth", "1", CVAR_ARCHIVE },



quake3的这个设置功能就是改变这个配置文件的一个过程了者也

在运行时候乐意通过控制台来加以改变的,也可以在设置的菜单中,来改变一部分的配置文件了

错误信息的输出者也,使用日志来处理了



调用这个cg各部分的函数来进行这个处理者也,循环不断的来进行遍历游戏的各种状态


例如cg_init初始化等等




/*

-------------------------------------------------

输入输出的逻辑处理

---------------------------------------------------

*/

操作的函数的处理

键盘的事件等等的处理

画这个活跃的一幁者也

_CrosshairPlayer



cg_t cg;

cgs_t cgs;

centity_t cg_entities[MAX_GENTITIES];

weaponInfo_t cg_weapons[MAX_WEAPONS];

itemInfo_t cg_items[MAX_ITEMS];


对于所有的武器,以及物体来分配内存来进行处理了

对于这个cgame期间的这个最大的武器数量,分配数组

最大的这个图标数目进行分组者也







。。。。。

来进行这个画十字交叉,画fps,画2d的显示等等的处理者也

记录这个cfg文件的值,cvar这个来进行存储这个cfg文件的这些内容者也

这个在游戏一开始记录游戏的配置文件者也

然后加载一个关卡地图的所有的声音文件者也

如果这个配置发生了改变,那么更新这个cvar这个变量等等

更新的cvar

加载表示玩家的头部,胸部,腿部等等3个md3模型者也,



 cg.crosshairClientNum

上一个攻击者

打印输出信息

输出错误者也



CG_RegisterItemSounds

The server says this item is used on this level

记录这个item这个图标的声音者也



CG_RegisterSounds记录这个声音者也





CG_RegisterGraphics记录这个图形的处理等等

This function may execute for a couple of minutes with a slow disk.

显示这个地图的名字,然后加载这个地图者也







加载这个gdx的里面的这个3d设置,关于2d的这个设置者也



加载水中的声音

加载这个得分板的声音的处理等等



 type 0 - no event handling

      1 - team menu

      2 - hud editor









/*

--------------------------------------------------

CG_LoadHudMenu();

--------------------------------------------------

*/





加载这个hud文件,也就是这个游戏时的这个,生命值,健康值,还有武器的弹药值等等

信息的处理等等者也



ui的这个hud,这个的显示,对于生命值,弹药的菜单等等的处理者也,

加载ui的显示文件了


/*

-------------------------------------------------
加载游戏的各项资源

-------------------------------------------------

*/



加载关卡中要用到的这个视频文件roq文件

播放这个视频等等的处理者也

加载roq quake3的专属视频文件,调用渲染器里面的画出图片的函数来进行渲染这个视频了者也


包括了以下的函数,例如

CG_DrawCinematic(int handle, float x, float y, float w, float h) {

播放这个视频的值

加载视频

画这个视频

释放roq文件的内存函数

这个加载上了这个cin文件,来进行这个视频的显示部分者也





Text_PaintWithCursor

CG_FeederItemText(

 CG_SetScoreSelection

CG_LoadMenus(const char *menuFile)

加载这个菜单的文件者也

这个乃是对于ui来调用的函数了


CG_PlaceString


Also called by scoreboard drawing

输出这个1,2,3名字的等次者也,在这个游戏结束后进行这个显示




(游戏逻辑部分的)



对于这个游戏过程中要处理的这个物体对象包括了

游戏开始前,要初始化这些

还有对于客户端和这个服务器端先要约定,游戏的类型

游戏的地图,玩家总数等等



玩家,武器,粒子系统,还有其他的entity物体者也


 

初始化玩家信息


玩家属性包括了(1)相应的模型(三部分,头部,胸部,下部),放到3D阶段渲染。

2 声音(例如起跳时的声音,落到水里时的声音,死亡时的声音,受伤时的声音)

(3)玩家的生命值,弹药数目,武器,装甲等等,通过2D窗口的文字,来进行2D渲染者也

如果是bot,还要加载bot对应的脚本程序,编译,赋给bot以参数者也

等等:

4)手里预先的的武器,gun!一般从配置文件设置出,quake3初始的默认武器就是一把机关枪。

位置,移动速度。状态(爬着,走路,跑步,游泳)等等


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部