站内搜索

搜索

手游源码-游戏源码-棋牌源码资源网-亲测源码-游戏搭建-破解游戏-网站源码-qq技术

100金币/天 购买

游戏编程是如何分解问题、逐个击破的?(上)

13

主题

59

帖子

90

金币

绿钻会员

Rank: 3Rank: 3

积分
224
发表于 2022-2-27 19:59:21 | 显示全部楼层 |阅读模式
程序员可以把任何有可能的想法变成现实,只有一个秘诀: 分解问题,分别实现。再分解子问题,再分别实现。如果有必要,那么回到第一步。 以上秘诀建议默读几遍,答案就在其中。 下面仔细说说,游戏编程是研发分解问题、逐个击破的。 1、游戏编程,应该研发为哪些子问题? 游戏编程要研发的问题,分为三个大块:渲染,输入,游戏逻辑。 1、渲染:解决“把东西画在屏幕上”这个问题。 比较古老的游戏机或研发,可以直接用底层绘图函数,写几行代码就能画点东西出来。而研发的计算机架构比较复杂,渲染还研发硬件和系统的协助,把研发面画在屏幕上得绕很大一个圈子。而且这还是在借助或库的情况下:
一个能画三角形的程序,得写个几百行 或的作用,就是帮你在研发、操作系统和程序研发搭建了桥梁,离开它们更是寸步难行。 虽然画一个三角面很难,但不用慌,成熟的研发引擎可以直接拿来用,不用自己重新发明轮子。 2、输入:解决研发如何控制游戏角色的问题。 处理用户输入,从编程上讲相对简单。但难点在于它是一个研发、硬件、游戏设计相研发的问题。 比如说:《绝地求生》(吃鸡)这个游戏,用鼠标+键盘操作,用手柄操作,或是手机触屏操作,它的逻辑都是不太一样的。几年前在手机上玩FPS、TPS游戏研发小众。现在很多人用手机吃鸡,也研发手机版的操作优化相当到位。 随着VR和AR的研发,输入方式在未来也会研发革新和挑战。 3、游戏逻辑:用代码实现游戏研发,让游戏跑起来。 说个最简单的例子:小游戏2048。要实现2048游戏,除研发外,至少要做这些事:
棋盘数据化。至少研发一个4x4的二维数组。游戏内容数据化。用对象或整数记录有哪些数字,以及对应的位置。把棋盘背景、数字画出来。输入包括上、下、左、右四种,每次操作后,盘面都会发生变化。该移动的移动,该合并的合并。 游戏逻辑大致就负责这几件事。 实际上,游戏中事无巨细。玩家体验到的研发,输入如何处理、何时播放特效、播放音效、如何提示、物体如何研发,都与游戏逻辑有关。 所以研发技术领域中“逻辑开发”所研发的人力是最多的。就算是休闲小游戏也研发了大量细节,需要研发设计师和逻辑程序员协力完成。 2、把渲染、输入和逻辑联系起来 游戏代码架构,符合一种研发的循环结构,称之为“引擎循环”。看代码:

    while (true)
{
    // 每一帧要做的事
    用户输入处理(); // 处理当前时刻的用户输入
    游戏逻辑();     // 所有游戏逻辑执行一次,只执行一帧
    渲染();         // 把该画的画出来
    
    // 时间控制
    while (游戏速度过快)
    {
        等待一会儿;
    }
}

无论多么先进的研发引擎,封装的多么复杂,本质上研发符合这一流程。因为这是由输入、逻辑和渲染的先后顺序决定的。 3、开发流程与研发 程序代码如何变成游戏,有些外行人可能认为是这样: 写300行代码,一个小人动起来了;再写300行代码,又一个小人动起来了。 事实肯定不是这样的,这样写程序员累死了游戏也做不完。 实际上,任何复杂的系统,都有它的层次结构。一开始我们说的“分解问题,分别实现”编程一个最简单游戏代码,那么子问题解决了,肯定要再有机组合再一起。 像游戏研发的复杂系统中,不仅需要写代码实现功能研发,还要把开发流程也研发化、工具化。 比方说,我要做一个3D研发战略游戏比如《魔兽争霸》,我不能像狗熊掰玉米,想到哪就做到哪。相反,我要研发这个游戏的需求进行规划: 首先,针对游戏研发功能,完成必要的研发控制、摄像机控制、角色运动、模型研发等基础功能。 其次,与设计师、美术人员一起,做出必要的研发、场景、基础建筑、UI等不可或缺的东西。 再次,按照设计师的研发编程一个最简单游戏代码,实现技能系统、特效系统、时间系统、状态和研发系统等模块。 由于这个游戏规模较大,后期研发编辑地图、创建关卡、创建战役等研发,所以有必要做一个专用的编辑器。 这个编辑器可以研发所有游戏的基本功能,包括研发地形、搭建关卡、修改研发、搭配技能、设定任务条件等等很多功能。 设计师只需要用编辑器去研发游戏的兵种、地图、战役等等,绝大多数问题都不要麻烦程序员。如果研发有功能满足不了,就提新的研发加入到编辑器中。
《魔兽争霸3》编辑器界面 实际上,对这个游戏来说天外神坛,整个游戏程序都可以看做编辑器的解释器。 当然不是所有游戏都要先做一个研发,才能开发游戏。但研发大型游戏开发中,必要的研发工具、标准化的研发流程必不可少。 所以,像游戏研发复杂软件,它的研发更像是: 根据需要,把研发拆解为基本的功能研发,分别实现。把研发功能模块组成具有完整功能的研发。把功能模块继续研发,构建完整的游戏研发。4、那么,制作研发的难点在哪里? 说到研发,制作游戏的难点也就不言自明了:一是分别解决每一个问题,让每一个模块做得更好;二是研发整合功能,让游戏研发变得更好。 换个角度看,游戏技术的研发来自两个方面:一是研发层面的技术进步;二是研发逻辑层面的迭代进步。 不要问哪里是难点,如果想要研发更好的游戏引擎、做出更好的游戏,那么处处都是难点,处处都有进步的空间,没有止境。 其中滋味,只有自己试过才能知道。听别人说,永远也无法了解螃蟹是什么味道。 就说到这里吧。 最后以《戴森球计划》的宇宙结束本文。
游戏,是另一片星辰大海
【天外神坛】免责声明及帮助
1.重要:如果遇到隐藏内容回复后显示为代码状态,直接刷新一下页面即可解决此问题。
2.本文部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
3.若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4.如果本站有侵犯、不妥之处的资源,请在网站右边客服联系我们。将会第一时间解决!
5.本站所有内容均由互联网收集整理、网友上传,仅供大家参考、学习,不存在任何商业目的与商业用途。
6.本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上个主题 下个主题 快速回复 返回列表 客服中心 搜索 QQ加群
上个主题 下个主题 快速回复 返回列表 客服中心 搜索 QQ加群

QQ|Archiver|小黑屋|天外神坛

湘ICP备2021015333号

Powered by 天外神坛 X3.4 © 2020-2022 天外神坛