用 Python 语言来写游戏

每个程序员差不多都是从计算机爱好者开始的,尤其是那些令人心醉神迷的电脑游戏,不仅造就了整个游戏产业,推动了计算机行业软硬件的升级,而且吸引了大量的爱好者最终加入了游戏软件开发的行业。腾讯、网易、盛大、完美时空等公司的巨大现金流都来源于游戏产业。

我小时候玩过街机,魂斗罗、俄罗斯方块、Quake、三角洲、Fifa、魔兽世界、魔兽争霸等,可能会参与完美时空的游戏开发。现在的热门游戏是王者荣耀、吃鸡等等,我的兴趣虽然已志不在此。

当然,我本人也非常喜欢玩游戏。我喜欢自由自在的游戏和需要脑力的游戏。比如,“GTA 系列”“老滚系列”和“三国志系列”。在玩游戏的过程中,我体会到各种各样的乐趣,同时,作为开发者,我也会从专业的角度出发,思考这款游戏究竟是如何制作出来的。

我发现,喜欢玩游戏的人,都很有兴趣自己做一款游戏。哪怕自己不懂编程,但是自己做做策划,懂美术的话自己做做图,能让自己的游戏跑起来,就是一件幸福的事情。

我看过网上各式各样的“傻瓜式”游戏开发工具,比如 RPG MAKER。任何不懂编程的人,只需要导入规定的模板,就能方便地开发出一款游戏。然而,这种方法只能开发某一类非常简单的游戏。如果想要开发出一款真正意义上的游戏,还是要借助编程基础和系统的开发知识。

我举几个简单的例子,你就明白了。

1、在《守望先锋》里,我们看到的子弹射击,对方被击伤,这些都是经过怎样不断地网络优化实现的呢?还有各种网络预判模型,你是否都了解呢?

2、我们玩的《星际争霸》,究竟是每个线程控制一个兵种,还是一个线程刷新全部兵种画面?

3、《魔兽世界》如此庞大,它是如何将海量逻辑写在游戏客户端里?将逻辑编写成硬代码显然不理性,写成配置文件又缺乏机动性,那它是怎么做到的呢?

4、另外,我发现,很多公司在开发游戏的时候,选择引擎也是一个尴尬事。是自己研发一款引擎还是购买别家成熟的引擎呢?引擎的好坏,对开发的游戏来讲有什么影响?很多人也是不知道的。

1、我将会尽量选择简洁的 Python 语言来编写。我会从最上层的脚本语言 Python 的使用开始,剖析为什么游戏开发要从这里开始。在用到 C/C++ 代码的地方,我将会尽可能地使用简单易懂的语法来示范,所以,其实你只需要懂点儿英文就可以了(笑)。

2、我会尽量选择简单的开发工具,而不是动辄几个 G 的开发工具。比如“VS 系列”,比如各种复杂的 IDE。简单的开发工具足够简单明了地让你了解开发的具体流程,快速进入状态,而不是在设置工具上浪费大量的时间和精力。

3、我会尽量避免特别复杂的底层知识,但是也不会一带而过。我会帮你一步步梳理开发的流程,并仔细剖析,在 C/C++ 中如何控制计算机的各种设备,操作计算机的各种硬件。或许你还会在编译中遇到问题,我也会一步一步,由浅入深,教你如何解决编译问题。

4、我将用制作“打飞机”游戏 demo 的过程,来完成游戏开发内容的分解步骤讲解。之所以选择“打飞机”作为游戏 demo,是因为它的开发过程几乎涵盖了我要讲述的所有开发流程,包括操作、画面的前后遮挡、图像的碰撞和切换、资源包、脚本语言等等。


1、我会先带你熟悉游戏开发的基础概念。包括开发游戏需要涉及的基础知识和需要准备的工具:游戏引擎、底层图形接口和地图编辑器。

2、然后从 0 开始搭建一个游戏窗体,往窗体里添加图形、界面和操作。

3、我还会讲解如何嵌入脚本语言。毕竟使用硬代码编写游戏逻辑并不是一个很好的选择,而脚本语言的嵌入,可以让我们很方便地完成游戏的逻辑开发。我们只需要将底层图形图像的显示、函数等捆绑好,接下来交给脚本语言就好了。

4、除此之外,我还会阐述各种平台上的游戏开发和实现,带你学习一些最近热点的游戏开发知识。比如 HTML5 游戏和手机移动平台游戏。我们已经有了游戏开发的基本知识,也掌握了游戏开发的流程,再来看这些游戏的开发,就会变得很轻松了。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/451585.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/451585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

各种操作系统简介和功能分析

Windows 开发商 Microsoft Windows98/me Windows2000/XP Windows Server2003 Windows Vista Windows98/me是基于MS-DOS的混合的16/32位操作系统正慢慢的退出PC舞台了,2000/X P以及Server2003都是基于WindowsNT的32位操作系统,XP/Server2003已经有64位版本了。 Vista是微软最…

Cookie与Session的区别

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mec…

python实现简易工资管理系统(Salary Manage)源码

一、需求: 1.导入文件读取员工的信息和工资信息,最后将增加、删除或修改的员工工资信息写入原来的文件中 2.能够实现员工工资信息的增删改查 3.当增加和修改员工信息时用户用空格分隔员工姓名和薪资 4.实现退出功能 二、思路 1.首先需要将包含有员工薪资…

python 的作用

print正常是要输出到屏幕上,如果你希望输出到其他地方比如文件,就需要使用>>来把输出导向到文件。空格的目的是要区分关键词,如果你输入的是print>>,电脑会把它当成一个单词,而无法知道是print函数。

操作系统内存管理

参考文献: 20 张图揭开内存管理的迷雾 感谢三太子敖丙分享!

hexo github搭建博客常用的命令

这些命令你都用过吗? npm install hexo -g #安装 npm update hexo -g #升级 hexo init #初始化 hexo new "postName" #新建文章 hexo new page "pageName" #新建页面 hexo generate #生成静态页面至public目录 hexo server #开启预览访问端口&a…

写博客的好处,专家告诉你

把自己平时在做项目时和自己学习时的一些经验和心得记录下来。那样,首先可以增强自己对知识点的理解;其次,以后再用到的话,可以很方便的查询;最后,才是分享给大家,可以在用到这方面的知识的时候…

解决报错:java.util.UnknownFormatConversionException: Conversion = ‘p‘

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. ssm框架下 报错如题 2. 错误原因:我的情况是,代码中实体属性映射书写和数据库字段名字不一致。 选中位置数据…

JVM和JMM的区别

参考文献: java中JVM和JMM之间的区别 感谢作者分享!

[Java][网络编程]服务端向客户端发送信息

/*前置知识(服务端)1.首先要常见一个ServerSocket对象 服务端套接字,并且在服务端套接字里面确定需要使用的端口2.然后要创建一个Socket对象来接收ServerSocket的返回值。通常一个Socket对象对应一个客户端/涉及到多个客户端需要通过线程来解…

【Python】如何判断一个字符串为空

#方法一 if oneString: print "not empty" else: print "empty" #方法二 if oneString "": print "empty" else: print "not empty"

LRU 实现缓存

LRU:Least Recently used 最近最少使用 1.使用LinkedHashMap实现 inheritance实现方式 继承map类 可以使用Collections.synchronizedMap方式实现线程安全的操作 public class LruCache<K,V> extends LinkedHashMap<K,V> {private final int MAX_CACHE_SIZE;public …

使用vsftp作为集群的yum仓库

地址规划&#xff1a;vsftp服务器的地址为172.16.1.61使用的环境&#xff1a;[rootnfs01 scripts]# uname -a Linux nfs01 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux首先在yum服务器上挂载本地光盘mkdir /media/cdrom ;mount…

纯做技术是自娱自乐 抛开技术做技术才是出路

短短一生不过数十载&#xff0c;对于很多人而言&#xff0c;作IT、作技术只是生命中的某一段&#xff0c;并非所有。而无论是换工作还是换行业&#xff0c;只是一种形式而已&#xff0c;最终我们追求的是成功、是荣誉、是收获。于是在年轻的这几年里&#xff0c;作为技术人员理…

TOAD连接Oracle数据库失败:OCI_INVALID_HANDLE解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. toad 连接Oracle数据库连接失败如图&#xff1a; 2. 导致这个情况的前因&#xff1a;toad运行情况下&#xff0c;突然断电。 3. 解决…

多线程三大特性:原子性、有序性、可见性

参考文献&#xff1a;三大性质总结&#xff1a;原子性&#xff0c;有序性&#xff0c;可见性 感谢作者分享&#xff01;

git checkout 和 git reset

git checkout 主要有三个作用&#xff1a; 第一个就是切换分支。例如你从远程仓库clone下来所有的源代码&#xff0c;你git branch一下会看到你通常是在master&#xff0c;如果你想切换到某一个分支上呢&#xff1f;git checkout <branchname>第二个就是放弃对某个文件的…

python-访问者模式

源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明&#xff1a; 访问者模式的基本想法是&#xff0c;软件系统中拥有一个由许多对象构成的、比较稳定的对象结构&#xff0c;这些对象的类都拥有一个 accept 方法用来接受访问者对象的访问。访问者是一个接口&am…

面试题:Fibonacci数列

题目描述&#xff1a;大家都知道斐波那契数列&#xff0c;现在要求输入一个整数n&#xff0c;请你输出斐波那契数列的第n项&#xff08;从0开始&#xff0c;第0项为0&#xff09;。 方法1&#xff1a;递归 public class Solution {public int Fibonacci(int n) {if (n 0){retu…

“行到水穷处,坐看云起时.“

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 自由自在&#xff0c;随意而行&#xff0c; 只沿着流水向上&#xff0c;不知不觉的就走到了泉眼尽头&#xff0c; 无路可走的时候 &…