游戏代码编程入门(游戏代码编程教学)语言的选择
游戏代码也写了几年, 有时候在想如果现在给刚入行的自己一点建议也许能有一点帮助。
所以这篇日志主要是分享一下自己对于游戏编程入门的一些想法。
这篇文章由爱发电支持写作, 如果你喜欢我做的事情,可以考虑在那里支持我。
(资料图片)
语言的选择
在一开始更多是推荐从高级语言入门,比如 Java、C#、lua、python,javascript。在这个时期可以配合一些游戏引擎来学习,如果你是因为喜欢游戏才学习编程的可能不喜欢老是 print 一些文字,可能更喜欢输出图片。
可以直接从对应语言的游戏引擎开始做几个小 Demo 了解一下游戏构造,但是游戏引擎有个弊端就是 API 太多入门有点难……
游戏引擎的优点是做游戏会比较快,但是引擎整体还是略庞大,不适合学习代码之用。
之后可以使用 pico-8、love2d、pygame、SDL 或者直接 javascript 操作 canvas 画布来制作尝试制作游戏挑战自己编程能力。
而 C 语言(包含 C++)可以放在后续研究,研究 C 语言可以对语言底层点的东西理解。像指针可以让你直接访问内存,这在其他语言中是很少见。可能一般感受不出来它的力量,但当你面对资源紧张的系统(需要手动内存管理),比如 GBA 和 NDS 上面的编程时候就绕不开 C 语言甚至汇编语言了。
一定要多动手
我在没学习编程之前是个爱看书的小青年。所以在我刚开始学习写代码时候常常就一直看书没有实践,有些东西看似懂了,实际还是要上手操作才能掌握透彻。
在着手写代码时候最好是带着问题去学习,编程其实就是把复杂问题分解。比如在制作一个小 Demo 时候可以考虑这几个问题:
如何显示一个图片/精灵如何播放帧动画如何控制两个物体碰撞两个物体碰撞时候销毁其中一个同时生成一个物体播放帧动画特效然后播放完成之后销毁如何播放音乐音效背景层滚动效果怎么做如何处理存档(数据持久化)而之后可以考虑的问题可能有:
精灵的显示如何分清楚哪个先渲染哪个后渲染(渲染层次)每次播放特效都生成一个物体然后销毁是不是有点浪费内存,可不可以一次生成多个重复利用(引入了对象池)存档时候如果 A 写入存档还没结束时候 B 又写入存档会不会出问题(引入了文件系统使用单例)不要执着于 Opengl
游戏行业比较流行图形学,可能感觉起来高达上,但是对于初学者(非初学者其实也一样)来说更多还是应该专注于 GamePlay。
我在刚开始写代码没多久就跑去拿本 opengl 红宝书在啃,写了一堆代码到头来也没学到什么。
一开始不要考虑3D 方面东西,从简单的2d 开始比较不错。这个时候我更多推荐看下代码本色和游戏人工智能来锻炼一下代码能力。
甚至如果要学图形学 Shader 的,我更多建议是先直接用 Unity 上面先学习如何写一些 Shader(推荐Unity 着色器和屏幕特效开发秘笈),能写一些比较特效之后然后再回头去写那些渲染管线 Opengl 那些会比较有感触。
不要禁锢在游戏引擎中
现在游戏引擎非常方便,写软件的目的就是为了使其越来越容易使用。
但一直使用游戏引擎对于初学编程的人来说会比较难以提高编程水平。个人建议是可以从先从游戏引擎入门,然后尝试不使用引擎使用上面提到一些底层点的框架或者工具来制作游戏。
造点小轮子有助于提高
很多人都说不要重复造轮子,但有时候别人的轮子比较重量级不够轻。自己写点适合自己的轻量级的轮子也对自己编程能力有一定提高,也可以更多享受编程的乐趣。
比如用上文提到的比较底层的框架(比如 SDL)来制作游戏然后自己写个简单的地图编辑器、粒子系统、存档文件保存读取系统或者菜单系统。虽然你做的这个跟专业引擎制作的没法比,但有一天你回到引擎里再来看待一些问题会有不一样的解决思路。
注意数据结构的应用
数据结构刚学习时候会陷入这东西在游戏开发中能干什么的疑惑之中。除了比较常见寻路用到图和网络编程的消息队列,其他的在我一开始学习数据结构时候都一无所知。
堆栈的应用:在处理菜单时候比如进入设置菜单时候把新菜单压栈操作,返回时候出栈销毁即可。在游戏场景进入到一个房间时候可以把当前游戏场景暂停然后把新的房间场景压栈。
队列的应用:在一些需要缓冲输入时候(比如格斗游戏)可以使用队列来控制输入操作。在一些技能系统比如一回合有8个体力槽玩家来组合攻击。在制作回放系统时候也可以使用队列来制作。
树的应用:基本是当你需要面对分支而且每个分支都有分支时候需要考虑。典型的比如剧情或者对话树,在节点下有很多子物体,子物体又可以有很多子物体时候也是它的应用场景。
图的应用:在可视化流程控制,有限状态机和导航系统都可以找到它的影子。
游戏开发设计模式应用
这个其实有专门书籍进行阐述, 我也只是班门弄斧而已 ,我只谈论几个对于我初学时候比较有收获的。
单例模式:在很多人刚开始接触游戏引擎时候都会面临一个问题是场景切换不销毁数据,不推荐的做法也是一些初学者会犯的是把数据保存到本地,然后下个场景再读取。这种直接进行读写操作是不可取而且当你要保存的是一个游戏对象(GameObject)时候就没办法了(当然其实也可以序列化对象保存到本地但仍然不可取)。这个时候比较可取的就是保存到一个全局的静态对象/变量上,这就引入了单例模式。还有比如一些系统只能有一个入口不允许随便使用不然会出错,比如典型的文件 IO 和控制器输入控制。
数据驱动:在 Unity 的 ScriptObject 中明显就是数据驱动,其核心思想就是改动数据而不必改动代码。而当你要使用数据驱动时候一定要分清楚什么可以硬编码什么可以数据驱动,配置太多的话是很影响开发效率和可阅读性。
降低指针跳转消耗:我觉得这个也是 ECS 提出的原因之一,在大型游戏中面对的是巨量的游戏物体,这个时候游戏物体中又有各种指针跳转的话造成的性能消耗就不能忽视了。所以在写代码时候要注意降低指针跳转,尽量让内存连续分布,比如使用结构体和数组。当然内存连续分布也可以减少内存碎片。
原型模式:这个一开始好像是在 Cocos2d-x 里面看到过,一个接口来实现克隆当前对象。在实际游戏中其实也挺常见,比如 GBA 的木叶战记中,鸣人使用影分身可以生成一个新的人物但是攻击力和血量减半。在 Unity 中 Prefab 从 Project 窗口拖动到 Scene 中时候也是使用类似思路(应该吧)。
注意代码整洁
这个更多是经验性的东西,我也难说做得很好。保持代码可读性是为了日后你或者别人回来看代码能看得懂。保持函数的单一职责很有必要,当你发现有些代码重复写了几次就应该思考这是否应该放到一个函数中。你必须明白的是 Bug 总是会有的,总有一天你或者别人会重新看这些代码,如果在写的时候稍加注意,后期的维护和复用就会相对简单轻松。
具体可以看下代码大全、代码整洁之道和这个视频。
最后,制作游戏很有趣,写游戏代码也很开心,希望你也能享受游戏编程的快乐!
2019/12/23
Codinggamer
推荐书籍
游戏设计、原型与开发Data Structures for Game Programmers游戏编程模式代码大全代码整洁之道游戏人工智能编程案例精粹代码本色:用编程模拟自然系统Game Coding CompleteGame Programming Algorithms and TechniquesShaders for Game Programmers and ArtistsUnity 着色器和屏幕特效开发秘笈标签:
相关阅读
-
【全球聚看点】炉石传说索瑞森大帝怎么获得(关于卡牌合成指数的算法机制)
大家好,我是Mialong,今天给大家带来新一期的狂野卡牌合成推荐。这个栏目主要推荐给大家一些在狂野天梯...
2022-11-16 -
莱卡镜头好在什么地方(专业设计,精益求精)
Khun_K;徕卡M10-D+M50mm 2AA自从徕卡制造的第一款APO镜头——APO-TELYT-R180mmf 3 4于1975年亮相后...
2022-11-16 -
【全球聚看点】炉石传说索瑞森大帝怎么获得(关于卡牌合成指数的算法机制)
大家好,我是Mialong,今天给大家带来新一期的狂野卡牌合成推荐。这个栏目主要推荐给大家一些在狂野天梯...
2022-11-16 -
莱卡镜头好在什么地方(专业设计,精益求精)
Khun_K;徕卡M10-D+M50mm 2AA自从徕卡制造的第一款APO镜头——APO-TELYT-R180mmf 3 4于1975年亮相后...
2022-11-16 -
快看点丨label matrix打印设置(labelmatrix注册码分享)
简介DataMatrix(数据矩阵),是一种由黑色、白色的色块(单元格)以正方形或长方形组成的二维条码(也...
2022-11-16 -
天天资讯:美孚润滑脂型号说明(美孚润滑脂产品介绍) 特点是什么
美孚润滑脂MobilgreaseXHP100 320 321 322MineMobilgreaseXHP™Mine矿山系列优质复合锂基润滑脂具有5...
2022-11-16 -
天天微速讯:惠普m1005一体机驱动安装扫描(16款惠普打印机支持微信打印功能)
通常情况下使用打印机,我们都是连接USB线、设置无线或有线网络,有时候觉得无线打印已经很OK;不过遇到...
2022-11-16 -
每日消息!iphone4手机如何刷机(苹果机刷机最好的方法) 一共分为五个步骤
苹果手机刷机一共分为五个步骤(适用于有home摁键iPhone):第一步是将需要刷机的手机进行关机,同时在...
2022-11-16 -
今日播报!星云游戏修改器怎么用(免费无限充值任何游戏软件推荐) 游戏介绍
星云OL无限钻石下载。星云OL是一款画面非常精美的策略飞行射击游戏,清新且带有科幻效果的游戏画面吸引...
2022-11-16 -
【环球新视野】win10 rtm版是什么意思(讲解win10低配精简版)
外媒WindowsLatest报道,微软已经完成了2020Windows10更新十月版(即20H2版本)的推出,该公司预计将确...
2022-11-16 -
全球今亮点!2020年国产对讲机哪个牌子好(6款实力派国产对讲机品牌:好易通TC-500S)
对讲机,90年代最初在国内销售的时候,那时还没有国产机,主要是日本的建伍、八重洲、美国的摩托罗拉等...
2022-11-16 -
flv格式如何播放视频(遇到这些情况要如何操作)
软件版本:软件大小:软件授权:适用平台:VistaWin7http: dl pconline com cn download 51613...
2022-11-16 -
全球球精选!桌面快捷方式删不掉怎么办(win10桌面图标箭头去除方法)
win10桌面图标箭头怎么去掉?你都知道吗。方法一原理很简单,借助一段 bat命令,快速去掉桌面图标箭头,...
2022-11-16 -
【全球速看料】配置最高的手机有哪些 配置最高的手机型号及特点(魅族MX4)
智能手机硬件发展越来越强大的今天,手机性能也就成为了处理速度与APP运行顺滑程度的根本,那么配置最高...
2022-11-16
精彩推荐
阅读排行
相关词
- 滚动:国产手机质量最好的是哪个品牌
- 笔记本电脑不能关机的原因是什么?要如何解决
- 万和消毒柜怎么样 万和消毒柜质量好吗
- 环球短讯!苹果2019新机上市时间 详细介绍发布
- 【环球新视野】win10 rtm版是什么意思(讲解win10低配精简版)
- 网络视频下载软件(软件安装方法)
- 天天观焦点:最新笔记本电脑cpu排名情况 笔记本cpu温度多少正常
- 全球微头条丨女生说啾啾是什么意思(啾咪是什么意思)
- 看热讯:藏语扎西德勒是什么意思(正确解说扎西德勒的含义)
- 每日速读!iphone优点有哪些?看完以后更想买!
- flv格式如何播放视频(遇到这些情况要如何操作)
- 全球速看:交易猫上怎么买号 交易猫平台买号步骤是什么
- 世界今日讯!为什么我的电脑最近总是突然黑屏,过一两秒就自动恢复了?
- 滚动:高工产业研究院:今年锂电材料出货量预计增逾6成
- 老人手机哪个牌子好 老人机介绍
- 关注:海南人才引进落户政策2022最新规定
- 最新资讯:红米手机电池好不好 红米手机电池可以更换吗
- 交易猫卖号步骤是什么 交易猫平台怎么卖号安全
- 南京税务:税动力助力新能源汽车产业发展
- 当前播报:ipadmini2配置怎么样 ipadmini2配置参数
- 红米小米2s对比哪个更好
- 海南人才引进落户流程规则2022
- ios14什么时候发布正式版 iOS 14支持升级的iPhone
- 世界热讯:《洛奇》超尖端科技 机动装置制服
- 每日速递:松下x600怎么样 松下x600性能评测(投影技术)
- 关注:vista怎么升级win7 vista升级win7的准备工作
- 保卫萝卜怎么闯关27 保卫萝卜挑战27攻略分享
- 消息!联想z370怎么样 联想z370配置及外观评测(外观、配置)
- 最深情张无忌现身 吴启华正式代言《新倚天屠龙记》
- 国产平板电脑哪个牌子好 五大品牌推荐(台电)
- 拳棍双绝招!《剑侠世界3》全新门派丐帮技能视频首曝
- 【世界独家】原定于今日发布的《守望先锋:归来》平衡补丁现已推迟发布
- 观速讯丨无线ap怎么用?无线ap操作步骤
- 【全球速看料】配置最高的手机有哪些 配置最高的手机型号及特点(魅族MX4)
- 【热闻】怎么在交易猫上卖号比较安全 靠谱的卖号app交易猫分享
- 短讯!交易猫上卖号可靠吗可信吗 正规卖号平台交易猫介绍
- 关注:联想i5笔记本怎么样 联想i5笔记本价格及配置大全
- 环球精选!《文明6》将推出领袖季票 含武则天等新领袖
- 当前视点!佳能sx130数码相机报价及评测 佳能sx130数码相机报价
- 大象鼻子里有骨头吗?大象鼻子可以用来做什么?
- 世界看热讯:逆水寒手游首发高通硬件光追,画质比肩端游
- 疯狂猜图大拇指是什么品牌 疯狂猜图简介
- 诺基亚是哪国的?诺基亚手机推荐有哪些
- 高性价比平板电脑哪款好 高性价比平板电脑推荐(苹果 iPad mini 2)
- 天天播报:可以搜附近人的交友软件有哪些 详细介绍
- 每日观察!诺基亚cdma手机大全(最热门六款介绍)你钟意哪款?
- 全球观速讯丨三星s9000手机测评详情
- 全球今日讯!爆!黑色星期五期间PS+订阅将开启75折优惠
- 焦点简讯:ktv点歌机如何加歌 ktv点歌机加歌方法
- 【环球快播报】笔记本电脑怎么设置wifi 笔记本电脑设置wifi方法
- 新资讯:洗衣机什么牌子好 中国洗衣机质量排行榜 看完你就知道如何挑选了
- 每日快播:镇江丹徒:“税动力”助力乡村振兴添力蓄能
- 新消息丨iPhone6什么配置参数?iPhone6标配有什么?
- 【全球新视野】交易猫可靠吗买号安全么 游戏交易选择交易猫怎么样
- 《无主之地》开发商上海工作室更名 将积极寻求本地合作
- 玄英是哪个季节?鸡蛋果是什么季节的水果?
- 快看点丨阿胶糕冬天变硬还能吃吗 阿胶糕放硬了怎样回软
- 免费打电话软件有什么(微信电话本)
- 天天热点评!灌云税务:聚焦纳税人需求提升服务质效
- 焦点!花菜怎么保存时间长还新鲜 花菜焯水后过夜还能吃吗
- 征集乡建十年杰出项目 2022雪鹿奖·乡建年度榜样来了
- 造电车,外资车企不灵了
- 香港特色小吃有哪些?香港十大特色美食小盘点
- 当前聚焦:索尼tx55评测详情 索尼tx55相关评测知识
- 【时快讯】《星球大战:银河边缘传说-增强版》将与PSVR2首发同步发售
- 热点!据称《战神5》已达到首周销售目标 售出350万份
- 【环球新要闻】谷果手机怎么样
- 天天观速讯丨虚幻5引擎获得一个实质性更新 5.1更新带来大量方便工具
- 每日观点:“医疗+”剧集视角更丰富
- 每日时讯!特斯拉潮州车祸车主亲属:不认同此次第三方鉴定 要求提供数据
- 环球新消息丨ios9.2怎么越狱 iOS9.2.1完美越狱教程
- 世界快报:iPhone4s怎么越狱 iphone4s越狱教程
- 新氧持续推进行业自律行动,2022上演“虚假信息”狙击战
- 重点聚焦!智氪丨小熊电器:低端市场走不通了,高端市场能赢回来吗?
- 天天动态:有高血压能参保“北京普惠健康保”吗?官方解答来了
- 焦点速讯:中国精酿啤酒版图:从头部大厂的“小尝试”到区域小厂的“大生意”,透视赛道新趋势
- 北京轨道交通22号线会带来哪些改变?
- 全球实时:htc t328w解锁方法介绍 htct328w解锁准备工具
- 环球焦点!福田汽车保稳提质发力海外
- 世界新动态:电压力锅怎么用 (电压力锅使用步骤和方法)
- 今日聚焦!氢能产业潜力大 应加强产业创新能力——聚焦2022年中国氢能产业大会
- 环球今日报丨花城为什么怕谢怜碰,花城,谢怜简介
- 全球微速讯:华为荣耀7plus的最新报价及测评介绍 华为荣耀7plus的机身配置介绍
- 兴业证券:需求预期向好 把握煤炭配置窗口
- 联想怎么一键还原
- 世界视讯!DVI是什么
- 《爱情神话》要拍“平行篇” 网友希望“老白”爱情有归宿
- 全球动态:江苏灌南税务:“硬举措”提升营商环境“软实力”
- word拼写检查功能好用吗?word拼写检查功能如何启动?
- 全球速讯:潮州事故还未解决 特斯拉又确认两起Model 3致命车祸
- 环球时讯:手机怎么上p站 方法步骤分享
- 世界微头条丨北汽蓝谷高层人事变动落地,张国富等人履新
- 每日讯息!联想y450拆机步骤介绍 联想Y450的拆机准备工具
- 今日热闻!等离子显示屏原理是什么 等离子显示屏优缺点介绍(原理)
- 天天实时:thinkpadw530评测及报价
- 4000元左右的笔记本推荐——六种品牌供你选择
- 天天实时:福斯特医生总共有几季,福斯特医生讲了什么
- 星云溢彩 暖冬初现《全民泡泡超人》12月版本更新预告
- 快讯:《剑网1:归来》资料片“杨名立万”震撼公测!马上门派等你体验
- 环球看点!索尼tx7c多少钱 索尼tx7v评测(配置、细节)
- 【世界快播报】年度K歌游戏《超级歌声2023》现已正式上市
- 全球快消息!1寸、2寸、小2寸的照片尺寸是多少 大小尺寸对比
- 环球速递!dota是什么意思 dota是什么游戏?
- 天天报道:安排是什么梗 出自哪里
- 百事通!花开花落电视剧大结局,花开花落演员阵容
- 今日关注:一汽丰田2022全新皇冠品牌发布,首款中型豪华SUV国内首发
- 【环球热闻】任天堂公布《宝可梦:朱/紫》特色介绍视频
- 锦心似玉秦姨娘的真实身份,锦心似玉中秦姨娘
- 当前观点:一加 11 首批搭载第二代骁龙8移动平台,首发移动光追开放平台
- lozio是什么品牌,lozio品牌包含哪些品类
- 环球热议:锦心似玉秦姨娘的真实身份,结局怎样
- 天天视点!华少为什么消失了 华少的妻子是谁?
- 环球热消息:祁同伟老婆,祁同伟是个什么样的人
- 【独家焦点】金庸14部武侠电视剧,你都看过哪些
- 环球快消息!镖人阿育娅是什么人物,镖人剧情介绍
- 环球快看点丨全面“躺平”的海外电影市场,2022票房到底有多少了?
- 热点聚焦:《使命召唤19&战区2》发布第一赛季战斗通行证预告片 将于11月17日上线
- 全球即时看!困境反转,谁在狂买游戏股?多款新游将上,一批游戏公司却仍是白菜价
- 国内首档外景纪实类阅读节目日前开播 《我在岛屿读书》解锁文学“圈粉”更多可能性
- 世界视讯!海外华语脱口秀传递快乐
- 今日热文:《最终幻想14》6.18版本更新笔记公开 「万魔殿 边境之狱」副本解限
- Newzoo:2022年全球游戏市场预计同比下降4.3%
- 今日视点:镭风hd6770显卡怎么样 镭风hd6770显卡最新报价是多少
- 【世界独家】手机怎么上p站
- 当前消息!冷冷的眼泪随风吹才知道离别的滋味是什么歌 原唱是谁
- 嘉心糖是什么,嘉心糖成员是谁?
- 当前短讯!潜行狙击第二部叫什么名字,谢天华、黄宗泽、徐子珊等人联袂出
- 环球百事通!谷神星一号遥四运载火箭发射成功
- 【环球播资讯】国内旅游市场再迎利好 加大“一刀切” 层层加码整治力度
- 今日热讯:戴尔保修查询需要什么 戴尔保修期多久
- 焦点关注:蓝天白云晴空万里忽然暴风雨是什么歌,原唱是谁?
- 当前信息:苹果6代手机报价及配置参数
- 天天微资讯!htc t328w解锁方法介绍
- 林子祥个人资料简介-敢爱敢做歌词
- 佳能sx130数码相机报价及评测
- 全球新消息丨电脑主机开不了机是什么原因呢
- 我的世界电梯如何做?我的世界多层红石电梯教程一览
- n鞋子是什么牌子 你穿个这个品牌吗
- 张翰宣布新恋情-徐璐张翰官宣三连拍好甜蜜他们公开恋情了吗?
- 全球热点!尼康l110怎么样 尼康l110市场价格介绍
- 优化措施能有效应对疫情处置中的瓶颈和困难
- 簪子怎么用 簪子的使用教程
- 天天要闻:地铁建设须量力而行
- 全球速递!versace jeans是什么牌子主打哪些产品
- 【新要闻】Robotaxi商业化周期漫长,文远知行如何走出一条多元化落地之路
- 环球视点!“创作者走入田间地头才能写出有广度的故事”
- 哈利波特共有几部电影 观影顺序是什么
- 白木喜白水喜白欢喜是什么电视剧,我家有喜剧情介绍
- 许仙的儿子叫什么,许仕林取了谁
- 焦点观察:周峻纬老婆是谁 那些英年早婚的明星还有谁?