游戏概念的引入
1. 软件(可分为在本地运行
或者需要与在线服务器交流的软件
)
2. 游戏本身的逻辑由后端代码实现
3. 前端划分多种游戏元素,与后端逻辑绑定,接收用户操作。
4. 一般游戏已经封装好,由此需要逆向解包才能提取资源(解包难度主要取决于对方采用的加密方法)
5. 根据运行的平台不同,软件又可以分为针对于电脑或者移动端开发的软件(本质在于针对的CPU指令集不同)
实际中对游戏的操作
解包:
即逆向工程,但多数情况违法且不符合道德- 本质即密码学的解密过程,但知道的内容多(比如知道开发语言,可以根据语言特征对比逆向解析/如果有加密就更加麻烦)
游戏发展史
游戏思想
- 程序即功能与想法的自动化、电脑化实现
- 可以实现研究类的想法(如设计一个计算器)
- 相对应的,也可以实现娱乐化想法(如设计一个猜数字的程序)
- 游戏的想法就是在这样的基础上产生的
- 相当于把程序按使用意义分为了研究类和娱乐类以及其他
游戏史发展
本质:将人类的视错觉用计算机实现
- 现实世界的建模:“伪3D”偷懒,只记录一个角度平面效果,信息不全,所以就无法从其他角度看(得不到正确的结果);真3D记录了物理的三维信息,所以可以得到任何角度的结果。
-
二维思想
如何理解维度:
这里指的是数学上的维数,一个维度对应一个坐标- 如果你学过机器学习,就知道可以用代码实现多维(n>=3)的表达
- 所以拿电脑屏幕举例,它是由横向和纵向排列的像素显示点组成,无论怎么看,都只有二维。
- 所以显示出来的东西是二维的
立体的感受原因
- 拿画画举例,可以画一个无立体感无透视的图案,也可以画出效果。这就是由人主导的把立体内容平面化的操作,所以图片、画像显得立体。但画像最终呈现为二维平面上的结果,你不能通过移动它看到其他效果(即不能像现实里那样看到多角度的图画)
- 即“伪3D”
在计算机中如何实现
- 相当于你把最终的二维效果(用绘画的角度来说,已经处理好了透视、景深…)直接输入给计算机了。
- 如,图片的最终呈现
- 或者也可以在电脑中实现,把这个二维效果再由不同的投影公式重新排列到电脑现实屏的像素点上
- 相当于你把最终的二维效果(用绘画的角度来说,已经处理好了透视、景深…)直接输入给计算机了。
总结:输入给计算机的信息只有两维
- 不做处理,简单的平面游戏 - 或者把图像进行简单的映射(如45度投影处理),使得看起来有立体感
- 但,无论如何,输入计算机的只有二维,再怎么操作也只能操纵这2维数据。
-
三维世界的表达
-
与二维的差别:
- 二维是指只存储了两维的信息,那么根据数学思想,二维平面内的东西可以处理营造出假的立体感,但平面内的东西始终不是真正立体的。即只有平面。
- 如果有了三维坐标系,那么可以准确表示出一个立体的物体(如,记录立方体的8个顶点坐标就能确定一个立方体)
-
总结:
- 二维的信息不全,只展示了一个平面的效果。对于一幅房子的画,你无法脑补出它背后被遮挡的内容。即只有2维的信息,缺失第三维。
- 三维信息全面,只需配套合适算法,就能实时显示任何角度的效果
-
-
总结
即二维相当于存储对象的照片,三维相当于存储对象本身。
总结
-
无论代码中的几维对象,最终只能由计算实现3D效果到2维平面的显示,因为要显示在二维的屏幕上。(重新排列像素位置,使得显示出来在感受上是立体的)
-
从代码角度来说。伪3D只有两维,然后经过固定的视差处理公式得出效果。但3D有3维,依赖于更复杂的算法实时生成。所以本质上都是3维感觉的表达,只不过前者在代码逻辑上也没有实现3维。
- 所以说,伪3D可以说是人类试图在2D屏幕上实现3维效果的最初尝试(引入了视差效果)
- 缺点是只把最终结果搬到了计算机里
-
3D对象是真实存在的
(因为代码逻辑表达真实存在)
,但最终只能由计算实现3D效果到2维平面的显示