开发者网络

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 111|回复: 3

游戏开发如何入门?

[复制链接]

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2022-12-30 16:19:44 | 显示全部楼层 |阅读模式
想做游戏开发方面的工程师,请教在大学如何入门
回复

使用道具 举报

1

主题

3

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-12-30 16:20:14 | 显示全部楼层
题主若想要做游戏开发所要掌握的知识很多,比如编程、美术、设计等等。对于没有基础的人来说,除了基本的专业理论知识外,康石石会先让自己的学生从熟悉制作软件开始,在实操的过程中再逐渐深入学习其他技能。下面康石石为题主介绍一个常用的游戏引擎Unity,以便能快速入门游戏制作的基本操作。

一、非代码能实现的功能

Unity是常用的游戏引擎之一,下面康石石主要从非代码实现,可视化代码实现和代码基础规则入手讲解。
非代码实现,无疑来说是一开始使用这款软件的福音了。它主要靠Unity公司预设的基础标准包和UI画布实现,下面将重点介绍这两个功能。
1. Unity Standard Asset 基础标准包



Asset——Import Package

基础标准包可以从一开始建立项目时就导入,也可以在建立项目后从Asset菜单栏中导入。
1)2D即2D人物与场景的预设,包括了角色基本动画,场景基本碰撞和材质动画;


点开Prefabs能看到预设好gameObjects,可以直接投放到场景中。这些gameObjects包含了上面提到了角色基本动画,场景碰撞等。


我们拖拽“人物”Prefab和一个“地板”Prefab到场景中。人物可以在地板上进行基本运动。


2)Character 即 3D人物包,包含了第一人称视角,第三人称视角和一个官方案例。


以第三人称视角为例,同样在Prefab中有预设的gameObject人物形象。那么“地板”就需要学生们在场景中自己建立一个Cube就可以了。人物可以在地板上进行基本运动。


3)Utility 即 基础脚本,题主可以看到有许多的代码都已经有了预设,方便用户使用。


以旋转位移的脚本为例,代码编写的更加完整,并且将许多参数自定义化,让用户可以在窗口设置具体参数。




2. UI Canvas
UI画布一般出现在游戏开始时,设置进入新游戏或者游戏参数的界面,经常以如下形式出现,在游戏中也是不可缺少的一部分。


画布中出现的非脚本代码主要用于页面跳转。


首先必须在游戏场景中建立一个画布,然后在画布中建立Image。Image是为了让画布填充背景图案,如下图。


画布中为了进行场景切换,必须两个不同的模块Panel1,Panel2.




然后再利用非脚本代码的点按事件进行Trigger。




逻辑很简单,其实就是在点击Panel1后,Panel2出现而Panel1消失。

二、可视化代码快速实现

可视化代码的部分,在上述画布中也有体现,但只是很简单的一部分。事实上,利用好了可视化脚本会对非工程师的游戏爱好者,学生,艺术家添加不少乐趣。
首先介绍一款可视化代码插件Bolt,在Unity商场售价74美元。在今年3月份上线,在各大网站的测评中都是好评如潮。


导入Unity中会有一些既定文件夹。它的机制组成由Flow Machine,State Machine两大块。其实就是流程机制,状态机制,变量。在物体下添加任意一种机制,再进行更多编辑。




当选择flow Machine时,会出现对应当状态栏。状态栏可以选择Embed或者Marcos。


当选择Embed时,直接会出现节点编辑窗口。以让物体变色为例。Start为物体开始状态,让物体变色就是对Material材质进行一番Get和Set。


点击运行后,物体从白色变成红色。


画面中的小球是继承了方块的可视化脚本。操作时,需要将Embed设置好的一系列节点进行Convert,然后存为一个marcos(可以理解为像Prefab一样可以无限利用的物体)。







Flow Marcos

再以飞机大战游戏为例,飞机的基本动态和人物行走不同。飞机的前进方向为上下;人物的前进方向为左右。那么就涉及到飞机靠刚体Rigidbody的力度控制前进。


前进距离=Rigidbody力度参数的位移=X,Z轴位移*速度


以节点方式连接控制脚本,虽然少了许多繁琐的标点符号和变量赋值,但也需要建立在理解基本的代码规则和有一定的逻辑思维的基础上完成。下一节将仔细说明。

三、代码基础规则

在开始接触代码前,先了解Unity所使用的语言为C#和Java。这里我介绍C#语言,也是Unity引擎中使用的最频繁的语言。由于代码也不是只言片语能够解释清楚的,所以在此文主要让大家理解三点:脚本中的变量与功能;脚本书写规则;不同类型游戏的输入规则。
1. 脚本中的变量与功能
变量的命名规则一般为小写英文开头,变量前一定跟随变量类型如Int,Float,String等。
举例: int myVariable = 5;
在声明变量时可以是public也可以是private。 如果是public,那么你的变量数值可以自由调节。Private 则不可被调用。


功能为Void开头,默认初始功能为Start和Update。


Update经常和FixUpdate令人产生误解。由于系统在结算游戏时帧数不同,1s可能1帧也可能30帧,所以在用Update时经常会在代码中加入Time.Deltatime意思是以帧数为单位更新而不是以系统默认的秒数。 FixUpdate则是以0.02s为单位更新数据。


2. 脚本书写规则
在C#脚本书写中有几个符号经常出现:Dot,Semi-colon,Curly Brace,Comments,Bracket。
“Dot”,作为跟随属性,经常跟在Class后面。同时也可以是作为一个词与词之间的断点呈现在代码语言中。
举例: Debug.Log(transform. position.x);
跟随在Class后的Dot后接词开头字母为大写;作为断点的Dot后接词开头字母为小写。
“Semi-Colon”,作为一个语句的结束,跟随所有的有效语句。
“Curly Brace”,框住一个完整逻辑,使该逻辑生效。如果缺少了,或者框错了容易产生误解,如同成加减乘除的运算是需要框框的制约条件来决定运算顺序的。


“Comment”,使用//符号,是为了方便用户学习添加的备注,而不影响游戏效果的方式。


“Bracket“,有许多用法。比如条件句,在括号内可以对功能进行条件限制,经常用在循环语句中。还可以为陈述句,表明显示的结果。


3. 不同类型游戏的输入规则
不同端口的游戏在游戏中的代码体现不同。端游用键盘和鼠标输入;手游用触屏或手柄输入;主机用手柄输入;VR用特殊手柄或头控输入。
输入方式中,以代码化呈现的话,最简单的要属端游。以GetMouse和GetKey/GetButton/GetAxis为导向只要指示对应的动作即可。
手游则需要 GetTouch为导向,GetMouse在电脑上模拟操作。
主机则需要GetAxis然后用InputManager上面的命名规则进行具体动作要求即可。
VR则是根据不同开发商有不同的SDK,根据SDK的开发指南进行对应开发,对开发者的能力要求更高。就目前开发情况而言,还未能见到自由行走的VR游戏。
总体难度而言:端游<主机<手游<VR

以上望有帮助,欢迎交流
———————————————————
欢迎关注我的个人官方微信(kang-shishi)


如有艺术留学、院校、专业、作品集方面的问题,可私信康石石咨询
回复

使用道具 举报

0

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-12-30 16:21:09 | 显示全部楼层

  • 可以选择一个难度适中的项目来学习网络游戏开发技术,开发小规模游戏与开发大规模游戏的难度是完全不一样的,在学习游戏开发的过程中不一定要选择非常简单的游戏,但也不建议选择难度非常高的游戏,因为这会使你在学习过程中遇到很多问题,如果无法解决就会产生一些挫败感
  • 也可以学习一套固有教程,当然,更好的一种办法也是我比较建议的一种办法,就是从开发的套路入手,更加恰当的一种说法就是学习游戏开发企业中常用的开发经验、方式方法
  • 比如开发一款Unity游戏,没有进入企业工作过的新人会新建游戏对象然后往对象上面挂脚本,而如果你是一个专业开发者,那你就知道在企业中开发游戏时,游戏的数据、数值会由策划设定好,程序要通过读取这些游戏数值,根据这些数值来创建游戏对象,通过这些对象再进一步的挂上Unity中专门负责游戏渲染的游戏对象
  • 在开发网络游戏时,专业开发与业余开发的开发思维是不一样的,一个是按照官方的教程去做,另外一个是从数据驱动的角度进行游戏开发,整体思路都是不一样的,还有游戏的打包策略、游戏的性能优化、游戏的Shader开发、游戏的整体客户端框架、服务器框架、还有它的UI框架等等,这些都是在进行网络游戏开发时需要思考的一些方法
详细内容可以参考我们的《皇室战争S2:分布式与帧同步》公开课
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-30 16:22:08 | 显示全部楼层
1.自己想一个小游戏,发挥自己的创意,这样会比较有意思,但是项目一定要小,比如说俄罗斯方块这种。
2.确定要开发的平台,是桌面还是移动端。
3.确定开发要使用的游戏引擎。建议最好是用开源的引擎,这样比较用利于学到深层次的东西。
4.google 看教程,自己动手一点点做,以自己想的小游戏为目标,一点点实现。
不要有畏难情绪,总之一句话,多动手,少动嘴,就是干。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-10 06:34 , Processed in 0.100419 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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