当前位置:网站首页>电子游戏的核心原理
电子游戏的核心原理
2022-07-29 12:44:00 【大数据v】
导读:游戏开发的底层逻辑。
作者:Crossin先生
来源:Crossin的编程教室(ID:crossincode)
你小时候有没有玩过这样一种玩具:一块硬纸,一面画着一只鸟,一面画着一个笼子。硬纸下粘上一根细棒。用手来回转动细棒,让硬纸的两面快速交替出现,就会看见鸟被关在了笼子里。
这种现象被称为视觉暂留,又称余晖效应。人眼的性质使得光信号在进入之后,会保持一小段时间,这段时间大约是0.1~0.4秒。电影、动画便是利用这种现象得以实现,把一幅幅静态画面快速连续播放,形成看上去连续的活动画面。游戏也不例外。
来看一段用 Python 里的知名游戏库 pygame(需安装)写的一个“空游戏”代码:
这段代码虽然只显示了一张背景图片,完全没有任何游戏功能,但这已经是一个最基本的游戏代码框架了。
注意代码中一个 while True 的循环,注释为“游戏主循环”。这就是游戏的主体部分。每次循环都相当于是一张静态的画面,程序一直运行,只需要去修改这张画面,就有了动态的效果。
与动画不同,游戏中不仅要把一幅幅画面播放出来,还需要处理玩家的操作与游戏中内容的交互。所以在这个 while 循环中,还要去接收玩家的输入,以及处理游戏中的各种逻辑判断、运动、碰撞等等。
在以上代码的主循环里,做了对退出事件的响应:
for event in pygame.event.get():
if event.type == pygame.QUIT:
#接收到退出事件后退出程序
pygame.quit()
exit()
然后把图像绘制到窗口中:
screen.blit(background, (0,0)
最后,把整个窗口画面更新:
pygame.display.update()
如果你看过“黏土动画”,那么就可以把整个游戏过程想象成拍摄黏土动画的过程:
每一次,screen.blit() 相当于去把人偶、布景移动一点点位置
pygame.display.update() 则是按下快门拍下一帧新的画面
而 if event.type == pygame.QUIT: 就是在判断,导演是不是喊停收工了
这一切都由计算机在很短的时间内处理,以至于玩家感觉是连贯的。
尽管这是非常简单的游戏逻辑,但在核心原理上,绝大多数的游戏都是相通的。即便是酷炫的3D游戏或者大型网游,它们同样是通过一个游戏主循环,在循环中更新各种游戏逻辑和显示效果来运作的。
有些大型3D游戏需要在一次循环内做很多事情,需要进行复杂的物理运算、计算光线的照射效果、处理大量电脑角色的智能、网络信息通讯等。在配置不高的电脑上,这些计算花费的时间就多,游戏刷新画面的频率就变慢了。这也就是我们常听说“一个游戏的帧率低”的原因,这种时候你就会感到游戏不流畅。
以上就是对于电子游戏核心原理的简单介绍。感谢转发和点赞的各位~
延伸阅读
《利用Python进行数据分析(原书第2版)》
干货直达
更多精彩
在公众号对话框输入以下关键词
查看更多优质内容!
读书 | 书单 | 干货 | 讲明白 | 神操作 | 手把手
大数据 | 云计算 | 数据库 | Python | 爬虫 | 可视化
AI | 人工智能 | 机器学习 | 深度学习 | NLP
5G | 中台 | 用户画像 | 数学 | 算法 | 数字孪生
据统计,99%的大咖都关注了这个公众号
边栏推荐
- Dataset:FIFA 2018 Statistics数据集(Predict FIFA 2018 Man of the Match预测2018年国际足联最佳球员)的简介、下载、使用方法之详细攻略
- Go简单实现协程池
- Py之eli5:eli5库的简介、安装、使用方法之详细攻略
- IDEA2021.2安装与配置(持续更新)
- Go-Excelize API源码阅读(七)—— CopySheet(from, to int)
- mysql5.7.35安装配置教程【超级详细安装教程】
- 常坐飞机的你,为什么老惦记着“升舱”?
- 3D激光SLAM:LeGO-LOAM论文解读---硬件系统部分
- Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)
- Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
猜你喜欢
随机推荐
MySql 5.7.38下载安装教程 ,并实现在Navicat操作MySql
pycharm专业版使用
2022 IDEA (学生邮箱认证)安装使用教程以及基础配置教程
人脸合成效果媲美StyleGAN,而它是个自编码器
What should I do if the webpage is hijacked and redirected?Release net repair method
mysql数据库安装(详细)
nacos cluster construction
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
Dataset:Medical Data and Hospital Readmissions医疗数据和医院再入院情况数据集的简介、下载、使用方法之详细攻略
TiCDC Migration - TiDB to MySQL Test
投资127亿!深圳,再添一所985
阿里云官方 Redis 开发规范!
Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
TiCDC synchronization delay problem
MySQL八股文背诵版
influxdb2的使用
BGP简单实验
[WeChat applet] One article to solve button, input, image components
【MySQL视图】视图的概念、创建、查看、删除和修改
【云原生】-Docker容器迁移Oracle到MySQL