找回密码
 立即注册
楼主: JamesB

游戏开发的过程大致是怎么样的?

[复制链接]
发表于 2021-11-17 11:14 | 显示全部楼层
@Kira同学回答的很详细了,我这里用最通俗的语言描述下最简单的原理
一  人物行走
1 你可以假设你有3个gif文件,分别是一个小人朝左走和朝右走以及原地踏步的动画,我们叫它们 向左走.gif  向右走.gif 原地踏步.gif
2 你先在屏幕中间绘制 《原地踏步.gif》,这里稍微讲下绘制动画原理,显示器有个术语叫“刷新率



你看到的显示器上的图像并不是静态的,而是每1/60秒重新绘制一次,所以你看到的屏幕上的东西都是在不停的刷掉重新绘制的,每次绘制的图像渐变不同的话,人眼的残留影像功能会就把这一渐变过程还原成动画,电视,电影都是这个原理。
3 如果用户按向左的按键,就不再绘制《原地踏步.gif 》,开始绘制《向左走.gif 》 ,并且每1/60秒重新绘制时,把这个图片绘制的位置左移1个像素,这样这个小人就以60像素/秒的速度播放向左走的动画了。
4 如果用户松开了想左的按键,就不再绘制《向左走.gif 》 ,就在当前图片位置绘制《原地踏步.gif 》
向右也是同样道理。

二 理解了动画播放,其他就在这个思路上继续前进,
1 先画草地,再画小人,小人就是在草地背景上行走。
2 画一条河,并标记那些河的区域的像素不能走,在播放行走动画时检查每个背景像素是不是能走,就实现了你玩的rpg里只有空地和路能走,河不能走。
3 如果你拥有游泳装备,那么在河的背景区域内,播放游泳动画,就实现了水里游泳。
4 《原地踏步.gif》左边40像素有个《敌人呆呆占.gif》,并且玩家按了A按键,那么就停止绘制《敌人呆呆占.gif》,开始绘制《敌人死翘翘.gif》,停止绘制《原地踏步.gif》,开始绘制《主角左勾拳.gif》。并同时播放《主角怒吼去死吧,mp3》 《死前惨叫.mp3》 《拳头打到肉上的声音.mp3》就实现了 打敌人的视觉和听觉效果。
如果是3D游戏,那么就不能用这些gif了,要利用3D投影技术或者光线追踪技术来模拟人眼看到的3D世界。


3D投影原理


光线追踪


上图就是人肉的3D投影效果。只不过平时这个过程用计算机实现了。

上述描述的都是视觉相关(渲染),游戏完整的技术还包括声音,物理模拟,AI(人工智能),剧本,逻辑控制,网络等等。
三 上述只是些技术点实现,完整的游戏是一个艺术商品,需要策划,美工,程序员,管理,QA,运营等等团结合作。你可以简单的用拍电影来理解这个过程。
策划就是导演:负责整个创意,玩法,以及如何让玩家心甘情愿的掏出钱包里的小钱钱来购买。
美术就是演员:负责漂漂亮亮的视觉效果,只不过一个是演的,一个是画的。
程序员就是摄像师和制作相机的,以及各种后期处理:用技术把创意和美美的东西用信息载体体现出来。
管理就是制片人:负责整个工期进度,成本。
QA就是质量控制:确保你们玩的游戏没有太坑爹的错误。
运营就是利用各种社会学资源和手段,推广产品。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-17 11:24 | 显示全部楼层
我觉得你们的回答都不够直观
题主直接下个虚幻4,再用关键词“蓝图入门”搜个教程来看
不用看完,因为你有程序基础,蓝图的逻辑一眼就能看懂。教程看10分钟你就知道游戏开发大概是怎么出来的了
发表于 2021-11-17 11:29 | 显示全部楼层
伪代码,2d游戏的大概流程,3d要复杂很多。只说明流程,有些细节不合理的~
float lastTime = 0;
float currentTime = 0;
float delta = 0;
bool gameRun = true;
int main()
{
        loadResource();
        while (gameRun)
        {
                currentTime = getTime();
                delta = currentTime - lastTime;
                lastTime = currentTime;
                draw(delta);
                logic(delta);
                playerInput(delta);
        }
        releaseResource();
}
void draw(delta)
{
        drawHreo(delta);
        drawEnemy(delta);
        drawWorld(delta);
        ...
}
void drawHero(delta)
{
        switch (hero.state)
        {
        case Run:
                drawHeroRun(delta);
                break;
        case Fire:
                drawHeroFire(delta);
                break;
        }
}
void drawHeroRun(delta)
{
        Matrix transformMatrix;
        transformMatrix.translate(hero.pos.x,hero.pos.y); // 移动角色
        device.draw(transformMatrix,hero.runAnimation.getImage()); //绘制
        hero.runAnimation.add(delta); // 这其实底层是个数组,存放着一个个图片,有一个计数器,0.1s画第一幅图,0.2s画第二幅,最后归零,循环
}
void playerInput(delta)
{
        if (input.key == 'w')
        {
                hero.state = run;
                hero.pos.y += delta * hero.speed;
                ....
        }
        if (input.key = 's')
        {
                hero.state = Run;
                hero.pos.y -= delta * hero.speed;
                ...
        }
        ...
        if (input.key = 'j')
        {
                hero.state = Fire;
                ...
        }
        if (input.key = ESC)
        {
                gameRun = false;
        }
        ...
}
发表于 2021-11-17 11:32 | 显示全部楼层
作为一个做了多年的游戏开发老兵,这里给大家介绍一下整个游戏开发的大致过程。
(1)立项

  什么是立项,简单直白的说,就是大家决定做一个什么类型的游戏。立项如何立呢?一般我们分为几种立项的模式:
    a: 完全创新型,游戏的玩法完全由自己来自主创新。这种国内比较少,玩法没有被验证,风险搞。
   b: 部分创新型, 主流的游戏玩法不变,做一些微创新,比如融合某某玩法等。
   c: 抄袭型, 抄写国外知名的游戏,抢先在国内市场上线,抄写一些火爆的游戏,到一些自己渠道能力强的地方抢占市场等。
   d: 外包型,这种没什么可说的,用户要做成什么样,你就乖乖的加班做就可以了。
   e: 换皮型, 这种就是把游戏换皮,或者本地化,比如英文变中文,也没有什么可说的。
   f: 其它类型,加个其它,显得更严谨,符合10多年程序员气质。

(2) 技术难点的验证

    立项完成后,重点的技术难点,美术风格,核心玩法就已经确定了,那么在这个过程中会有一些重点的核心的玩法需要技术验证,比如核心战斗最多多少人同时放技能不卡等。技术难点验证完成以后,项目基本上在研发上就没有了风险,快速验证技术上的可行性,不要等到项目做了好几个月才发现技术上达不到。

(3)项目1.0版本研发

   立项与技术难点验证完成以后接下来就开始项目研发了,研发出1.0的版本,项目研发中主要涉及一下的方面;
   (1)策划, 把整个游戏的玩法,具体落地,通过内测,调整核心的数值和玩法及用户体验。
   (2)美术: 场景美术,角色美术,动画与特效, UI设计。
   (3)程序: 客户端程序与服务器程序。
   (4)测试:  负责整个游戏的测试与bug提交与管理。
(4)内测,公测,小规模渠道上线测试

  1.0的游戏开发完成以后,首先是内测,调整基本的游戏数值与玩法,解决常见的bug。
内存完成后就开启公测或小渠道上线,看游戏的运营数据,根据游戏运营数据调整游戏,比如留存,次日活跃用户等。通过公测,进一步解决游戏的bug,验证游戏的稳定型,调整运营数据和玩法,通过小规模渠道上线进一步测试游戏的数据,为下一阶段运营提供保障。换句人话就是说,经过小规模渠道测试,这个游戏到底有商业价值,运营数据能否赚钱。很多游戏公司的游戏就死在了这里。

(5) 大规模渠道铺开,流量买入游戏运营,找发行代理商发行。
  经过验证以后,觉得游戏不错,接下来就是运营推广,购买渠道资源位,找发行代理商, 推广运营游戏。
发表于 2021-11-17 11:33 | 显示全部楼层
哈哈,楼主的这个问题问的有点太宽泛,就像你问电影是怎么做出来的,要吧这个问题说明白,够出一系列书了。
我先大致整理一下思路,其实之所以楼主看不明白,是因为,游戏不像一般的应用,通过文字、图片和数据的变化进行,过程直观。游戏看着复杂,是因为更多的变化是隐藏在复杂的动画下面。
先从2D游戏说起吧。比如一个角色从A点走到B点,其实是程序指定一个对象从A坐标到B坐标,中间的行走,是在播放一个动画序列帧,这个行走的具体效果,是美术和动画的同志来实现的,程序至少调用这个序列动画即可。
开发面对的问题本质还是那些,这些图片,动画,特效元素,在场景里的显示与隐藏,大小、透明度、速度、角度的变化控制;如何让各种系统资源消耗控制在可以接受的范围内;玩家操控下达的指令如何快速流畅的作出画面上的反馈;游戏的各种变量,数据如何管理和存储……哈哈,每一个都是一个深深的坑啊,没别的好办法,要想弄明白,多跳几个就行了。

另外,如果需要快速开发产品,有资金可以找成熟团队做啊,比如我啊:-D
发表于 2021-11-17 11:36 | 显示全部楼层
通常我们所说的“做游戏”,其实背后是一个过程的,大致都包含哪些过程呢?视频给你答案。
发表于 2021-11-17 11:39 | 显示全部楼层
分自己做游戏个人发给朋友玩和企业商用游戏

民用游戏的话,反正免费给朋友玩的。
前者的话,自己用个excel把各种需求什么都列好,用word也可以,我因为做类似三国杀的游戏,所以用excel列所有需求,每个技能啊,每个人物的信息什么的,在excel里就看平衡性,需求定好后,最后按着它编程就可以了,单机的直接eclipse-java-swing就可以了,环境什么都比VC好。

商用游戏的话,一般老大或董事会定题材,比如某个游戏。定下大致范围,有时候对有些细节有特别指示。

然后策划把界面都表示好,反正程序能知道画出来的什么样子,有什么逻辑,然后交给美术画,也有美术去找外包。

美术把图画好,作为资源给程序。

现在多手机游戏,分前端客户端和后端服务端。美术资源给前端。
发表于 2021-11-17 11:41 | 显示全部楼层
(回答最后有游戏源码分享!)
比较笼统的回答是:网上有很多流程的详细介绍,你把游戏开发想象成你在建一个房子,简单来说就是几个步骤:
1.画图纸:把游戏想出来,然后体现在策划案上
2.施工:美术和程序拿着这个策划案开工
3.检测:对游戏不断的测试调优
4.售楼:发行上线,收获玩家收获快乐
————————以下是正经内容————————————
其实,最简单的方法是:找一款游戏,解析它的代码!
或者打开唤境引擎,内置了非常多热门游戏的模版,四舍五入相当于破解了游戏源码啊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-17 11:45 | 显示全部楼层
谢邀,
作为游戏行内的某些资深愤青,回答了吧。
说实在话,若不是QQ邮箱的提问提示,我已经很久不上知乎网站了
规矩你们懂的,自己哔~~~过。
-----------------我是分割线-----------------------
游戏的程序开发部分,符合所有软件工程开发。
纵观了以上的言论,大家都大致的讲了讲,我要不说的细的,基本上就跟vc战士没区别了,有辱邀请。
-----------------我是分割线-----------------------
游戏开发本身,针对什么平台十分重要。
一般来说,游戏有个漫长的立项过程。这个过程中,我们会探讨,游戏玩什么,在什么平台上,做给谁玩,他们为什么会被这个产品吸引,我们有没有行之有效的手段去吸引这部分人群的注意力,同时,我怎么赢利,我如何能把钱从他们口袋里骗出来。
论述了这一堆的问题之后,几个问题就迎刃而解了。
首先 的问题是,我们的游戏做在什么平台上,这个平台是如何运作的。
其次 ,我们如何收费。
决定游戏平台非常重要,不同平台的游戏有不同平台的调研范围。
比如说,手游,和web,客户端,TV平台,PC游戏
他们的类型不同,后面需要调研的内容也不同。
这些确定之后,就进入了游戏平台的调研阶段,这阶段决定了我们用什么样的技术,什么样的引擎,引擎的功能能支撑到什么样子。
在后面,我们会根据调研的结果,以及我们立项想要做的游戏,制作个仅有核心玩法的简单小样,demo,提供给众人来验证我们当时的想法,以及是否符合大家对这游戏的期望。
在之后,我们会划分项目研发阶段,进行其他的逻辑结构的实现过程。
-----------------我是分割线-----------------------
现在我们具体的聊聊,关于人物行走的问题、
行走本身,在程序当中,被看做两个指令:
1、产生位移
2、播放行走动画。
一般来说,如果有引擎制作的游戏,那么引擎都会提供这两个功能
客户端只需要编写逻辑,判断位移是移动到那个点,如何接收和判断移动指令。和我从什么时候开始播放行走动画,什么时候停止动画播放。
然后就完成了行走的过程。
没有引擎制作的游戏,也是将行走拆解为以上两个部分,只不过引擎是把基础功能都写好了,只需要调用接口即可,没引擎需要自己写而已。
发表于 2021-11-17 11:52 | 显示全部楼层
胡罗舶Unity程序员Tiber小姐姐说,
一般游戏诞生的整个过程是这样的:
一、首先准备阶段:
根据市场需求的调查确定游戏的类型和内容,以及如何吸引让玩家参与并且喜欢这款游戏。

二、当确定要做一款什么样的游戏后,接下来就是开发阶段了
  一个比较完整的游戏团队一般包括:
  (1)产品经理:负责统筹兼顾整个游戏的制作过程。
  (2)策划:数值策划、系统策划、文案策划、关卡策划、脚本策划等等很多。他们会把整个游戏的流程和具体玩法需求明确。
  (3)程序:前端开发、后端开发。
  (4)美术:2D\3D设计,负责整个游戏的美术资源的制作。
  (5)测试:根据文档需求测试每一项功能。

三、当整个游戏流程基本完成后就进入Alpha测试阶段
进入Alpha阶段后,游戏基本的功能和流程已经完整,测试人员会对游戏进行系统全面的测试,并且通过bug提交系统提交游戏中的bug,开发团队会根据bug系统修复这些bug。

四、Alpha测试结束后,游戏就已经到了上线前的最后阶段了: Beta测试

这个时候产品已经定型,开发团队一般只剩下修正Bug了,一般有四大类bug

A类:能导致游戏中断的重大bug,这样的游戏是不能上线的。

B类:影响玩家游戏体验的问题,引起很多玩家挫败感,一般是玩法上的问题

C类:美术资源问题,图形问题

D类:游戏改进意见
如果这些bug都修复和改进了,游戏就可以正式上线了
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 09:52 , Processed in 0.098087 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表