精华内容
下载资源
问答
  • 企业级游戏理解
    千次阅读
    2019-06-19 18:20:05

    为什么说Egg.js是企业级Node框架

     

    自从Node.js问世以来,阿里就是国内跟进Node.js最激进的公司之一。阿里不仅在公司内大范围使用Node.js用作服务端开发,2016年还将他们使用Node做Web开发的经验沉淀下来,推出Egg.js开源项目,号称为企业级框架和应用而生。企业级开发对于框架有着诸多要求,那么Egg.js又是怎么满足这些要求的?

    在7月6日的ArchSummit架构师峰会深圳站上,Egg.js的主要开发者不四(网名死马)将给参会者带来《企业级 Node.js Web 框架研发与落地》的分享,借此机会,我们对他进行采访,询问了他对这个问题的看法。

     

    InfoQ:目前Egg.js在阿里内部使用的程度如何,有哪些使用场景?

    死马:阿里和蚂蚁内部在开源的 Egg.js 基础上封装了一个内部的框架,不同的子公司在此内部框架的基础上二次封装符合自身业务的框架。内部已经有超过 20 个 Egg.js 的上层框架,服务于十多个子公司,包括蚂蚁、天猫、阿里游戏、河马、阿里云等。线上运行了数百个基于 Egg.js 的应用。

    不同的业务会将 Egg.js 用在不同的场景,分类下来看主要是以下几类:

    • BFF 层:做业务的前后端之间的中间层,用于更清晰的划分前后端工作职责,提升研发效率。
    • 全栈:许多创新性业务和内部系统会通过 Egg.js 完成全栈应用研发,蚂蚁近期推出的语雀就是基于 Egg.js 全栈开发的。
    • SSR:部分业务需要通过服务端渲染来提升用户体验,有 Egg.js 的上层框架专注于服务端渲染同构解决方案。

    InfoQ:为什么说Egg.js是阿里和蚂蚁合作维护的,双方是如何协作的?

    死马:Egg.js 最开始脱胎于蚂蚁金服的内部 Node.js 框架 Chair,为了更好的服务于蚂蚁和阿里全集团的业务线,双方合作将 Chair 底层的核心抽离出来后开源,所以它是阿里和蚂蚁以虚拟工作组的方式合作推出的。而到现在,Egg.js 已经是一个很成熟的开源项目了,不仅仅有来自阿里和蚂蚁内部的开发者,还有许多的外部开发者一起帮忙维护。可以看到 Egg.js 主仓库已经有超过 100 个贡献者了。整个的协作流程以异步交流为主,所有的大的新功能都会在 Github 上开 issue 进行讨论,而代码变更都会由多方 review 后再合并。

     

    InfoQ:之前 Node.js 在做企业级 Web 开发时有哪些缺陷,Egg.js 做了哪些工作?

    死马:不能说 node 在做企业级 Web 开发时有缺陷,而是没有规范。企业项目和个人项目有许多不同之处:

    1. 参与的人员会很多,项目的维护者也经常变更
    2. 有非常多内部系统需要对接,特别像阿里、蚂蚁这个规模的公司,内部都维护了许多自己的中间件服务和定制化的 RPC 通信框架
    3. 对稳定性、性能、Bug 追踪等方面的要求会更高

    Egg.js 为了解决这个问题,主要是从定制规范和给团队架构师更大的灵活性两方面入手,同时也从我们内部的日常开发中提取了许多经验集成到框架中。

    1. 相较于 koa/express 来说,Egg.js 首先约定了一套代码目录结构,清晰的定义了从配置、路由、扩展、中间件到控制器、定时任务等各个 Web 应用研发过程中一些最基础的概念,这样不同团队的开发者使用框架写出来的代码风格会更一致,接手老项目的上手成本也会更低。
    2. 同时 Egg.js 通过插件机制,让团队架构师可以更轻松的整合企业内部服务,定制一个企业内部的框架,通过定制化的框架来统一输出一个技术栈,业务开发人员可以不去了解细节,即可接入企业的研发流程、内部服务、监控体系。
    3. Egg.js 不仅仅提供运行时的框架,同时也在测试方面提供了很多支持。包括测试执行框架、请求库、mock 方式等都有提供,可以从 Egg.js 的单元测试文档可以看出来我们是很认真的对待这件事情的,提升应用稳定性没有捷径。

     

    InfoQ:既然Egg.js以企业级开发为目标,有没有计划推出LTS版本?

    死马:Egg.js 最近发布了 2.0,而其实我们内部还有大量的应用都还是运行在 1.0 的版本上的,因此我们仍然会同时维护 1.0 和 2.0 两个版本。后续的计划中,我们起码会保证最近两个大版本的维护。

     

    InfoQ:由于JS社区活跃,Node框架的依赖一般又很多,版本更迭带来的代码腐化速度特别快,阿里内部是如何面对这一问题的?

    死马:随着 yarn 的诞生和 npm 5 的跟进,其实整个 js 社区对待依赖这件事情的看法都在慢慢在向着锁版本倾斜的。但是锁版本在我们看来是一个治标不治本的方案,虽然看起来更稳定,但是业务繁忙起来没有人会愿意去升级依赖,导致一段时间后应用的依赖无法升级,许多新特性和隐藏的 Bug 无法被修复。而在阿里和蚂蚁内部的 Node 实践方式来看,绝大多数复杂的功能都是由底层框架提供的,底层框架经常会有大量的新特性引入和 Bug 修复,特别是一些安全性问题非常紧急,一旦版本被应用开发者锁定,就会导致线上服务出现安全风险。所以阿里和蚂蚁内部的实践是遵循 Semver 风格的依赖引用,不锁定版本。

    当然不锁版本也有它的问题,总会有模块不小心发布出了问题,所以我们内部针对这个场景有不少的优化:

    • 阿里和蚂蚁内部使用自建的 npm registry 和自研的 npm 安装模块机制,可以完全掌控所有模块,当一个底层模块出现问题时,可以快速进行版本回退。
    • 通过控制研发流程,保证线上发布的代码包和测试用的代码包是同一个,避免线上运行的代码使用的依赖和测试时不一致。
    • Node 服务绝大部分复杂的逻辑都封装在底层框架中,由框架研发团队来确保兼容性。

     

    InfoQ:TypeScript被认为是企业级JS开发的标准,最近Egg.js支持了TypeScript,本身有没有使用TypeScript重写的计划?

    死马:Egg.js 本身不会使用 TypeScript 重写,对于框架本身而言,JS 的灵活性可以让它更容易实现一些特性,同时它也并没有那么复杂的业务逻辑,TypeScript 并无法给框架研发带来更多的帮助。

     

    InfoQ:Egg.js团队有没有计划推出一个官方的应用项目作为模板展示?

    死马:近期朴灵发起了一个 egg-cnode 项目,使用 Egg.js 重写了 cnode 社区。

     

    InfoQ:在国内做企业级框架有没有考虑过商业化的问题?

    死马:Egg.js 暂时并没有考虑商业化的问题,毕竟框架的维护成员仍然要花大量精力在公司业务上。当然这也不意味着 Egg.js 维护力度会下降,它是阿里和蚂蚁内部数百个应用的基石。

     

    InfoQ:Egg.js的发版频率和roadmap是怎样的?

    死马:Egg.js 的核心其实是很精简的,而且由于其直接服务于内部应用,所以对它的兼容性要求是非常高的,从 Egg.js 开源以来,只发布了两个大版本,Egg.js 1 基于 Koa 1,底层使用 co 来解决异步问题,Egg.js 2 基于 Koa 2,底层切换到 Async Await,即便是这种升级,应用层也是可以无感知直接切换的。

    Egg.js 自身的迭代采取插件化的开发机制,功能分散在不同的模块中,可能开发者在使用 Egg.js 的时候感知不到它的版本变更,但其实它一直都在进化。每周都可能有新的特性和 Bug fix 发布,Egg.js 更像是一个『改良派』而不是『改革派』,它会在兼容的前提下不断进化。

     

    InfoQ:如何保证Egg.js的持续维护?

    死马:首先,Egg.js 的核心维护者都是 node 社区的重度用户,除非这群人都不再当程序员,否则都会投入精力在其中继续维护它。其次,阿里和蚂蚁内部有数百个应用依赖于 Egg.js,从公司层面上来说也是愿意持续投入人力来维护它。现在 Egg.js 的运作也是完全社区化方式,讨论和代码变更都是基于 Github,有超过 100 位来自社区的贡献者,活跃度还是很高的。

    更多相关内容
  • ElasticSearch企业级开发

    千人学习 2019-12-13 14:39:42
    Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 本课程深入浅出剖析了Elasticsearch的...
  • 同时对前面几章的内容进行一个总结性的实战练习,让学生更理解所学内容; 本课程是《Java零基础至高级应用》系统课程的第四章,全套课程精细讲解,高级课程超过其他机构30%的课程量,经过我们全套课程系统学习的同学...
  • 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目 最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择 实践项目页面美观且实用,...
  • 2小时玩转Git:日常使用到根本理解

    千人学习 2020-01-06 14:12:50
    零基础也能轻松入门~ 在这门课中,我们保证你能收获到这些 1)Git最佳实践 2)版本管理 3)分支管理 4)标签管理 5)解决冲突 6)Git信息存储原理 7)深入理解Git三大分区 ---------------------------------------...
  • 企业微信开发第三方应用开发篇

    千人学习 2020-08-26 22:44:49
    充分理解企业微信第三方应用开发流程,带你快速避坑躲雷节约时间精力,从0到1全流程完成企业微信第三方网页应用及第三方小程序应用上线,了解上线后的上架流程。 另有《企业微信开发概述篇》免费视频系统,对企业...
  • 打造企业级云深度学习平台 打造企业级云深度学习平台 文 / 陈迪豪 机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累、神经网络算法的成熟以及高性能通用 GPU 的推广,深度学习逐渐成为计算机...
  • 我开源了几个高并发、大流量场景下的技术框架,很多都被应用到企业级的高并发大流量场景中。。。 小伙伴们如果觉得文章不错,点赞、收藏、评论,分享走一波呀,记得给冰河来个一键三连~~ CSDN私信我回复: 回复 ...

    大家好,我是冰河~~

    没错,冰河上 百度百科 了,且听我细细道来~~

    我出版了两本书。一本是《海量数据处理与大数据技术实战》,一本是《MySQL技术大全:开发、优化和运维实战》。两本书各自加印了一万册!!

    我开源了8本PDF原创电子书,其中,《深入理解高并发编程》 电子书全网一度下载达 32W+ ,被多家出版社约稿,《冰河的渗透实战笔记》 电子书全网5星好评,被多家出版社约稿。我开源了几个高并发、大流量场景下的技术框架,很多都被应用到企业级的高并发大流量场景中。。。

    小伙伴们如果觉得文章不错,点赞、收藏、评论,分享走一波呀,记得给冰河来个一键三连~~

    CSDN私信我回复:

    回复 “并发编程” 领取《深入理解高并发编程(第1版)》PDF文档。

    回复 “PDF” 领取冰河其他8本原创PDF文档和海量面试资料。

    《冰河的渗透实战笔记》下载链接:https://download.csdn.net/download/l1028386804/18830348

    冰河上了百度百科

    确切的说冰河出版的图书上了 百度百科
    在这里插入图片描述
    在这里插入图片描述

    关于写书过程

    其实,开始写书是在2019年的6月份了,出版社的王编辑找到了我,邀请我写书。当时的我,其实还是挺纠结的,要不要写呢?最终的决定还是写吧!一方面是想看看自己持续输出文章这么多年,就真的系统掌握了相关的知识吗?于是,我便和王编辑讨论书籍的选题,后来定的是大数据方向,要以实战为主。于是我便给书籍起了个名字——《海量数据处理与大数据技术实战》。于是乎,我们便签订了合同,我也开始写稿了。

    本来想的是在2019年11月21号交稿,没想到写作期间根本停不下来。可能别人是没词写。而我,是多的写不完。于是编辑为我限定了页数,让我全书不要超过550页,竟然还有这种事。于是乎,我便开始重新整理思路,确保全书尽量不要超过600页。

    要是内容写多了,编辑让我最后删。。。。

    期间,我也一路开挂式的写作,因为思路很清晰嘛,咱们的这位王编辑做事情也是很高效的,跟她配合起来效率就是高。

    就这样,我一路开挂式的写作,原本定的5个月的写作时间,只用了不到两个半月就写完了!

    最终的稿子排版后是598页。

    写完《海量数据处理与大数据技术实战》这本书,我们并没有闲着,又签订了《MySQL技术大全:开发优化与运维实战》这本书的合同。

    之后,我也是火力全开,2个半月 就写完了 760页MySQL技术大全:开发、优化和运维实战》,并且为全书录制了配套的视频说明。值得一提的是:《MySQL技术大全:开发、优化和运维实战全书基于MySQL8.x编写,兼容MySQL5.x版本。

    两本书的写作过程差不多花费了5个月的时间,这效率自己还是挺满意的~~

    有很多小伙伴都在问我,为啥写书会写的这么快: 关于写书我是这样提高自己的效率的:

    • 写书前我会花一整天的时间构思、整理书籍框架和结构,将其整理成脑图。
    • 反复思考、完善脑图的内容,尽量细化,把能想到的知识点都列到脑图上,此时做的是 “加法” 操作。
    • 完善脑图后,开始精简,修正脑图的内容,此时做的是 “减法” 操作。
    • 调整脑图枝干的顺序,修正细节。此时,脑图的结构基本就对应了书籍的目录。

    整理脑图前前后后会花费大概一周的时间,写这两本书时,我都是先按照这个思路来整理脑图的。整理的过程中,整本书的框架和结构也就深深的印在了我的脑海中,写作起来也就非常的顺畅了。这样一来,我就不会担心没词写,而是担心是不是写的太多了!

    关于写CSDN博客

    分类如下所示。

    在这里插入图片描述

    我个人的CSDN博客更新了大量技术专题,每一篇技术文章都干货满满!不少读者已经通过阅读我博客的文章,成功跳槽到大厂,实现升职加薪;也有不少读者实现了技术上的飞跃,成为自己所在公司的技术骨干!

    我的CSDN博客主页:

    https://binghe.blog.csdn.net/

    发布电子书

    我将发表在CSDN博客的部分文章进行了梳理,整理成9本超硬核的免费、开源的PDF电子书,其中,《深入理解高并发编程(第1版)》电子累计全网下载已达 32W+ ,小伙伴们可通过如下方式来获取这些电子书。

    CSDN私信我回复:

    回复 “并发编程” 领取《深入理解高并发编程(第1版)》PDF文档。

    回复 “PDF” 领取冰河其他8本原创PDF文档和海量面试资料。

    《冰河的渗透实战笔记》下载链接:https://download.csdn.net/download/l1028386804/18830348

    《深入理解高并发编程》部分图例

    全书涵盖的内容如下所示。

    书籍部分内容如下:

    整部电子书从源码解析到系统架构一气呵成,系统架构篇则作为整部PDF的最后一个部分,在系统架构篇中,我在CSDN博客中挑选了两篇最具代表性的文章《高并发秒杀系统架构解密,不是所有的秒杀都是秒杀 !》和《高并发分布式锁架构解密,不是所有的锁都是分布式锁! !》。通过对秒杀系统架构和分布式锁架构的深入剖析,使得小伙伴们在更高的思维层次来深入理解高并发编程,并做到在实际项目中灵活运用。

    《冰河的渗透实战笔记》电子书图例

    整本书的内容涵盖:Kali基础、渗透工具、木马制作、钓鱼链接生成、爆破密码、内存溢出攻击、web渗透、数据提权、社会工程学。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    其他的书籍大家下载下来自己看吧~~

    关于开源项目

    冰河曾经经历过一个完整电商系统用户从零到上亿的研发过程,在业务的不断发展与变化过程中,演化出电商系统和基于大数据的商品精准实时推荐平台,关于MySQL数据库的架构演进,小伙伴们可以参考《从零到千万用户,我是如何一步步优化MySQL数据库的?》,关于系统的架构演进,小伙伴们可以参考《系统从初期到支撑亿级流量,都经历了哪些架构上的演变?》。

    在研发系统的过程中,对一些通用的组件和功能进行了抽象和封装,以开源框架的形式开源出来,希望能够帮助到更多的小伙伴,也希望能够有更多的小伙伴来参与开源项目的研发。以下是我重点开源和维护的项目:

    全网首个完全开源的分布式全局有序序列号(分布式ID生成器)服务,支持嵌入式(Jar包)、RPC(Dubbo)、Restful API方式发布服务。开源地址:
    GitHub: https://github.com/sunshinelyz/mykit-serial
    Gitee: https://gitee.com/binghe001/mykit-serial

    基于可靠消息最终一致性的分布式事务框架mykit-transaction-message开源地址:
    GitHub: https://github.com/sunshinelyz/mykit-transaction-message
    Gitee: https://gitee.com/binghe001/mykit-transaction-message

    精准定时任务和延迟队列框架mykit-delay开源地址:
    GitHub: https://github.com/sunshinelyz/mykit-delay
    Gitee: https://gitee.com/binghe001/mykit-delay

    开源不易,希望小伙伴们能够给上面三个开源项目一个大大的star。

    还有一些其他项目,在我的github上,以mykit开头的开源项目都隶属于mykit系列框架,基本都是我个人在开发和维护。

    写开源框架的过程中,确实让自己的技术得到了质的提升,因为这需要掌握很多底层的原理和编码技巧,有时,还会涉及到技术的难点攻关。不过这也是对自己技术水平的验证和进一步的查漏补缺。

    最后,希望更多的小伙伴能够投入到开源项目的开发和维护中,mykit系列开源框架期待你的加入。开源不易,也希望小伙伴们能够给开源项目一个大大的star~~

    接下来的规划

    (1)沉淀自己,不断提升自己的技术积累和认知,形成自己的方法论。

    (2)与猫大人合力共同出版一本超硬核的技术图书,预计下半年出版。

    (3)继续增加输出文章的深度和普适度,提供一些通用的解决方案和方法论。

    (4)不断完善CSDN博客内容的深度,从深入原理、源码到实战,全方位输出技术文章,让每个小伙伴能够从根本上掌握相关的技术。

    (5)持续更新和维护mykit系列开源框架,希望能够帮助到更多的小伙伴,也希望能够有更多的小伙伴加入进来,也希望能够获得更多的小伙伴的Star。

    (6)其他代办事项。。。

    最后,CSDN私信我回复:

    回复 “并发编程” 领取《深入理解高并发编程(第1版)》PDF文档。

    回复 “PDF” 领取冰河其他8本原创PDF文档和海量面试资料。

    《冰河的渗透实战笔记》下载链接:https://download.csdn.net/download/l1028386804/18830348

    写在最后

    如果你想进大厂,想升职加薪,或者对自己现有的工作比较迷茫,都可以私信我交流,希望我的一些经历能够帮助到大家~~

    推荐阅读:

    好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,我是冰河,我们下期见~~

    展开全文
  • AAA级游戏开发领域 AAA级(游戏业界通常称其为“Triple-A”,即 3A)游戏是我们经常在评价一款游戏是否为大作的衡量标准,是游戏业界“酷”的代名词。 通常指的是游戏平台像XBOX360/Play Station或者 PC上的游戏作品...

    游戏开发面面观


    游戏产业的分类——六大游戏市场


    AAA级游戏开发领域

    AAA级(游戏业界通常称其为“Triple-A”,即 3A)游戏是我们经常在评价一款游戏是否为大作的衡量标准,是游戏业界“酷”的代名词。

    通常指的是游戏平台像XBOX360/Play Station或者 PC上的游戏作品。

    通常团队规模50人以上,开发周期在2~5年之间,有着不菲的开发预算。

    是成熟的商业作品,通常都有着精美的画质,好莱坞电影风格的过场CG动画,能将艺术与技术进行完美的结合,是会让玩家玩上几分钟就瞬间爱上然后大呼过瘾的游戏大作。

    特质:

    • 高投入
    • 高品质
    • 高销量
    • 极少的BUG
    • 良好可上手性
    • 广阔市场前景
    • 经过完善的测试
    • 图形用户界面友好
    • 规模庞大的研发团队
    • 大规模市场宣传和炒作
    • 将艺术与技术完美结合
    • 高表现的视觉与听觉效果
    • 让玩家在玩上的最初5分钟入迷
    • 愉悦的体验连续、均衡、贯穿整个游戏过程

    社交和休闲游戏开发领域

    社交和休闲(Social and casual)类游戏与AAA级游戏相比,有着更小的开发团队(5 ~ 25人),更短的开发周期(4 ~ 8个月),更少的开发预算。

    主要依附着社交网络(国内如QQ空间、人人网、新浪微博,国外如 facebook,twitter)而存在。
    (老少咸宜的QQ农场就是一款在国内风靡一时的典型社交和休闲类游戏)

    移动游戏开发领域

    移动游戏市场包括普通移动手机,智能手机以及平板电脑。
    目前该平台由 Android、iOS 以及Windows Phone这三大智能移动平台主导。
    这个市场与社交和休闲类游戏市场有着很大的交集,与社交和休闲类游戏相比,有着更小的开发团队(甚至是个人),更少的预算以及更短的开发周期。

    功能型游戏开发领域

    功能性游戏(Serious game)是开发出来用于响应特定的企业或者机构的需求的游戏作品。

    (比如,国外一款名叫《Remission》的游戏,就是用于帮助孩子们理解什么是化疗以及化疗的作用和重要性的)
    (又比如,我国解放军开发的FPS大作《光荣使命》系列游戏,就是为我国的军队量身打造的,进行专门的高科技军事训练的一流游戏作品)

    学术型游戏开发领域

    学术型游戏开发领域是近年来新出现的游戏产业分支。

    (现在越来越多的机构开始资助大学或者研究所的游戏开发团队,促进了这种新生的游戏开发领域的发展)

    独立游戏开发领域

    独立型游戏开发领域是游戏产业的命脉所在,随着近年移动平台与社交平台的火热崛起,独立游戏开发者们的舞台越扩越宽。

    有着这样一群独立游戏开发者,他们视游戏开发为梦想,他们是独立游戏开发领域的主角。

    独立开发者是一个游戏背后的唯一创造力量和经济力量。
    没有外部的发行商为独立游戏提供资金,也没有其他的实体发挥对游戏内容的创造性控制。

    独立游戏大多是自己发行的,但多数独立开发者也愿意与发行商一同协作。发行商不提供开发资金或者控制游戏的开发过程。在这种情况下,独立开发者将首先开发游戏,仅当游戏开发完成时或者快要完成时才让发行商介入。同时,通常独立开发者工作室都非常小,常常仅有1~2人。


    游戏类型

    1. RPG = Role-playing Game :角色扮演游戏
      由玩家扮演游戏中的一个或数个角色,有完整的故事情节的游戏。
      玩家可能会与冒险类游戏混淆,其实区分很简单,RPG游戏更强调的是剧情发展和个人体验。
      一般来说,RPG可分为日式和美式两种,主要区别在于文化背景和战斗方式。日式RPG多采用回合制或半即时制战斗。

    2. ACT = Action Game :动作游戏
      玩家控制游戏人物用各种武器消灭敌人以过关的游戏,不追求故事情节。
      电脑上的动作游戏大多脱胎于早期的街机游戏和动作游戏如《魂斗罗》《三国志》《鬼泣》系列等。
      设计主旨是面向普通玩家,以纯粹的娱乐休闲为目的,一般有少部分简单的解谜成份,操作简单,易于上手,紧张刺激,属于“大众化”游戏。

    3. AVG = Adventure Game:冒险游戏
      由玩家控制游戏人物进行虚拟冒险的游戏。
      与RPG不同的是,AVG的特色是故事情节往往是以完成一个任务或解开某些迷题的形式出现的,而且在游戏过程中刻意强调谜题的重要性。
      AVG也可再细分为动作类和解迷类两种,动作类AVG可以包含一些格斗或射击成分。
      而解迷类AVG则纯粹依靠解谜拉动剧情的发展,难度系数较大。

    4. SLG = Simulation Game:策略游戏
      玩家运用策略与电脑或其他玩家较量,以取得各种形式胜利的游戏。(或统一全国,或开拓外星殖民地)
      策略游戏可分为回合制和即时制两种。
      后又被细分出模拟经营,于是就产生了SIM (simulation)类游戏。

    5. RTS = Real-Time Strategy Game:即时战略游戏
      本来属于策略游戏SLG的一个分支,但由于其在世界上的迅速风靡,使之慢慢发展成了一个单独的类型,知名度甚至超过了SLG,有点像现在国际足联和国际奥委会的关系。
      后来,从其上又衍生出了所谓“即时战术游戏”,多以控制一个小队完成任务的方式,突出战术的作用。

    6. FTG = Fighting Game:格斗游戏
      由玩家操纵各种角色与电脑或另一玩家所控制的角色进行格斗的游戏。
      按呈画技术可再分为2D和3D两种。
      此类游戏谈不上什么剧情,最多有个简单的场景设定,或背景展示,场景、人物、操控等也比较单一,但操作难度较大,主要依靠玩家迅速的判断和微操作取胜。

    7. STG = Shooting Game:射击类游戏
      这里所说的射击类,并非是模拟射击(枪战),而是指纯的飞机射击。
      由玩家控制各种飞行物(主要是飞机)完成任务或过关的游戏。
      此类游戏分为两种,一叫科幻飞行模拟游戏(Science-Simulation Game),以非现实的想象空间为内容。
      另一种叫真实飞行模拟游戏(Real- Simulation Game),以现实世界为基础,以真实性取胜,追求拟真,达到身临其境的感觉。

    8. FPS = First Personal Shooting Game:第一人称视角射击游戏
      严格来说它是属于动作游戏的一个分支,但和RTS一样,由于其在世界上的迅速风靡,使之展成了一个单独的类型。

    9. PZL = Puzzle Game:益智类游戏
      Puzzle的原意是指以前用来培养儿童智力的拼图游戏,引申为各类有趣的益智游戏,总的来说适合休闲。

    10. RCG ( RAC ) =Racing Game:竞速游戏
      在电脑上模拟各类赛车运动的游戏,通常是在比赛场景下进行。
      非常讲究图像音效技术,往往是代表电脑游戏的尖端技术。惊险刺激,真实感强,深受车迷喜爱。
      另一种说法称之为“Driving Game”。目前,RCG内涵越来越丰富,出现了另一些其他模式的竞速游戏,如赛艇、赛马等等。

    11. CAG = Card Game:卡片游戏
      玩家操纵角色通过卡片战斗模式来进行的游戏。
      丰富的卡片种类使得游戏富于多变化性,给玩家无限的乐趣。

    12. TAB = Table Game:桌面游戏
      顾名思义,是从以前的桌面游戏脱胎到电脑上的游戏。
      如各类强手棋(即掷骰子决定移动格数的游戏),经典的如《大富翁》系列。棋牌类游戏也属于TAB。

    13. MSC = Music Game:音乐游戏
      培养玩家音乐敏感性,增强音乐感知的游戏。
      伴随美妙的音乐,有的要求玩家翩翩起舞,有的要求玩家手指体操。

    14. SPG = Sports Game:体育类游戏
      模拟各种体育赛事的游戏。

    WINDOWS编程基础

    Visual Studio文件类型分析

    **ipch**文件夹和**HelloVisualStudio.sdf**文件:都是Visual Studio用来保存预编译的头文件和 Intellisense用的,删除这些文件对于工程的开发完全没有影响,是可以删除掉的。 隐藏步骤:【工具】→【选项】,【文本编辑器】→【C/C++】→【高级】,然后把【始终使用退回位置】和【退回位置已在使用时,不警告】这两者设为True。

    Debug文件夹,当中存放着编译过程中的中间文件,以及最后的目标文件,.exe型的执行文件( Debug 文件夹的出现对应着我们在选择解决方案时选择的是 Debug 型,如果我们解决方案类型为Release型,那么这时工程文件夹下就出现的不是 Debug文件夹,而是名为Release的文件夹)。

    工程文件夹(HelloVisualStudio文件夹),当中存放着我们工程相关的源文件,头文件以及若干和后缀名为.vcxproj的项目文件。这个文件夹的名称与工程名的名称一致,因为我们例子中的工程名为 HelloVisualStudio,所以这个工程文件夹名称就为HelloVisualStudio。

    扩展名为 .sIn 的文件,它记录着关于解决方案中的信息,我们打开一个解决方案,就是通过双击它。

    扩展名为 .suo 的文件,它记录着应用于该解决方案的用户的选项。

    扩展名为 .opensdf 的文件,记录着关于项目的状态信息。此文件只在项目处于打开状态时才会有。

    API

    微软公司为了方便我们开发基于Windows 的应用程序,为我们提供了各种各样的函数。这些函数是Windows操作系统提供给应用程序编程的接口,即Application Programming Interface,简称API。

    任何Windows应用程序与Windows本身之间的所有通信,都要使用Windows应用程序编程接口,也就是Windows API。
    这个接口说白了就是几百个函数组成的一个集合,它们是Windows操作系统提供的标准函数,可以提供应用程序与Windows互相进行通信的方法。

    因为Windows API是在C语言称王争霸叱咤风云的年代开发的,那时候C++还未发迹,所以我们可以发现,在Windows和应用程序之间传递数据的是结构体而不是类。

    SDK

    Software Development Kit,中文译为软件开发包。

    SDK说白了就是一个开发所需资源的一个集合
    所以 DirectX SDK 就是用 DirectX 进行开发的一个资源的打包集合。

    这里需要注意API和SDK都是IT业界广泛使用的术语,并不是专指某种特定的API或者SDK。

    WinMain

    原型:

    int WINAPI WinMain(
    	_In_ HINSTANCE hInstance, 
    	_In_ HINSTACNE hPrevInstance,
    	_In_ LPSTR lpCmdLine,
    	_In_ int nCmdShow
    );
    

    WINAPI 就是_stdcall,只是为了让我们清楚知道这里的_stdcall 表示的是一种调用约定,它让编译器知道了应当以Windows兼容的方式来产生机器指令。
    如果我们在写WinMain函数的时候去掉这句WINAPI 而直接写:
    int WinMain(),仍然是可以编译并运行的,只不过在编译期间会得到一条警告( warning)。

    这里的_In_可以理解为一个宏,表示需要我们进行自行输入(input)的一个参数。与其对应的是_Out_,之后我们也会经常在函数定义的代码中看到,它表示指定的这个参数是函数本身向外输出(Output)的一个参数。

    第一个参数,HINSTANCE类型的 hInstance,它表示该程序当前运行的实例句柄。
    我们可以对这个类型HINSTANCE进行字面上的理解,h前缀表示这个参数的类型为handle,句柄的意思,而后面的Instance中文意思是实例,将两个意思结合起来,所以这个类型就是实例句柄。
    hInstance其实就是一个数值。当一个程序在 Windows下运行时,它唯一对应一个运行中的实例。也只有运行中的程序实例,才有资格分配到实例句柄。
    一个应用程序可以运行多个实例每运行一个实例,系统都会给该实例分配一个句柄值,并且通过hInstance参数传递给程序的入口点WinMain函数。

    第二个参数,HINSTANCE类型的hPrevInstance,表示当前实例的前一个实例的句柄。
    我们可以对这个参数进行字面上的理解: h表示参数类型为句柄(handle) , Prev代表先前的(previous)意思,Instance依旧表示实例,那么组合起来就是先前的实例句柄。
    对于这个参数的用法,MSDN中明确表示在Win32环境下,该参数总是取 NULL,这就是说,在Win32环境下,这个参数没有存在感,不起任何作用,只是在进行WinMain函数书写时需要将它专门作为一个参数表示出来而已。

    第三个参数,LPSTR类型的lpCmdLine,它是一个以空终止的字符串
    指定传递给运用程序的命令行参数。
    参数肢解:lp前缀表示这个参数为一个指针,Cmd表示 command,命令的意思,与Line组合起来就表示命令行。
    (例如,在 Windows7操作系统下的E盘有一个叫ForTheDream.txt 的文件,我们用鼠标双击这个文件时将启动记事本程序(notepad.exe)。此时系统会将E:\ForTheDream.txt作为命令行的参数传递给记事本程序的WinMain函数
    记事本程序在得到这个文件的文件路径后,就会在窗口中正确显示这个文件的内容)

    第四个参数,int类型的nCmdShow,指定程序窗口应该如何显示,是最大化,最小化,还是隐藏等等。
    这个参数可有如下取值:
    在这里插入图片描述

    PlaySound

    函数定义:

    BOOL PlaySound(
    	LPCTSTR pszSound,
    	HMODULE hmod,
    	DWORO fdwSound
    );
    

    必须在编译之前连接winmm.lib库文件。

    第一个参数,LPCTSTR类型的pszSound,可以看到作为LPCTSTR类型的此参数为一个字符串,指定了要播放的声音文件。这个值设为NULL 的话,就会把所有当前播放的声音全部停掉。

    第二个参数,HMODULE类型的 hmod,包含了在第一个参数中指定的声音文件作为资源的可执行文件的句柄。之后会详细介绍各种资源,这里把这个参数设为NULL就可以了。

    第三个参数,DWORD类型的 fdwSound,是一个用来控制声音播放的一个标志。

    下面是一些常用标识的列表。
    (可以使用一个或者多个标识,标识之间用“|”连接)

    在这里插入图片描述

    工程中包含库文件的方式

    • #pragma comment(lib,“winmm.lib”),在""之间填需要链接的库文件,一般置于头文件include语句后。
    • 在工程配置中添加库文件的包含。
      菜单栏【项目】->【属性】,【配置属性】->【链接器】->【输入】,【附加依赖项】->【编辑】
      在这里插入图片描述

    Windows程序的“外貌”——窗口

    每个Windows应用程序至少有一个窗口,称之为主窗口。

    一个应用程序通常都包含 标题栏、菜单栏、系统菜单、最小化框最大化框,甚至滚动条。

    • 客户区:窗口的一部分,游戏软件通常都在客户区完成游戏中各种画面、功能与效果的实现。而应用程序则主要管理客户区的外观及其操作。
    • 非客户区:标题栏、菜单栏、系统菜单、最小化、最大化框。主要由Windows系统来管理。

    窗口创建四部曲

    设计

    Windows已经定义好了一个窗口所具有的所有基本属性。

    WNDCLASSEX结构体 定义:

    typedef struct tagWNDCLASSEX{
    	UINT cbSize;
    	UINT style;
    	WNDPROC lpfnWndProc;
    	int cbClsExtra;
    	int cbWndExtra;
    	HINSTANCE hInstance;
    	HICON hIcon;
    	HCURSOR hCursor;
    	HBRUSH hbrBackground;
    	LPCTSTR lpszMenuName;
    	LPCTSTR lpszClassName;
    	HICON hIconSm;
    } WNDCLASSEX, *PWNDCLASSEX;
    

    在WinMain函数中定义一个WNDCLASSEX:

    #include <Windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	//开始设计一个完整的窗口类
    	WNDCLASSEX wndClass = { 0 };	//用WINDCLASSEX定义了一个窗口类,即用wndClass实例化了WINDCLASSEX,用于之后窗口的各项初始化
    	wndClass.cbSize = sizeof(WNDCLASSEX);	//设置结构体的字节数大小
    	wndClass.style = CS_HREDRAW | CS_VREDRAW;	//设置窗口样式(此处定义窗口风格为水平重绘、垂直重绘)
    	wndClass.lpfnWndProc = WndProc;	//设置指向窗口过程函数的指针
    	wndClass.cbClsExtra = 0;	//表示窗口类附加内存
    	wndClass.cbWndExtra = 0;	//表示窗口的附加内存
    	wndClass.hInstance = hInstance;	//指定包含窗口过程的程序的实例句柄
    	wndClass.hIcon = (HICON)::LoadImage(NULL, _T("icon.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);	//用全局的::LoadImage函数从本地加载自定义ico图标
    	wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);	//指定窗口类的光标句柄
    	wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);	//为hbrBackground成员指定一个灰色画刷句柄
    	wndClass.lpszMenuName = NULL;	//用一个以空终止的字符串,指定菜单资源的名字
    	wndClass.lpszClassName = _T("ForTheDreamOfGameDevelop");	//用一个以空终止的字符串,指定窗口类的名字
    	
    	return 0;
    }
    

    第二个参数:
    常用样式取值:
    在这里插入图片描述
    第三个参数:
    窗口过程函数是一个回调函数(不是由该函数的实现方直接调用的,而是在特定事件或条件发生时由另一方调用的,用于对该事件或条件进行响应)。

    针对Windows的消息处理机制,窗口过程函数被调用过程如下:
    1.在设计窗口类时,将窗口过程函数的地址赋值给lpfnWndProc成员变量
    2.调用ResgisterClass(&wndclass)注册窗口类,那么系统就有了我们所编写的窗口过程函数的地址
    3.当应用程序接收到某一窗口消息时,调用DispatchMessage(&msg)将消息回传给系统,系统则利用先前注册窗口类时得到的函数指针,调用窗口过程函数对消息进行处理

    注册
    创建
    显示与更新

    Windows资源的“身份证”——句柄

    在Windows应用程序中,窗口都是通过窗口句柄(HWND)来标识的。我们要对某个窗口进行操作的话,首先就是要得到这个窗口的句柄。

    句柄(HANDLE)
    在Windows程序中,有各种各样的资源,比如窗口、图标、光标等。系统创建这些资源时会为它们分配内存,并返回标识这些资源的标识号,这些标识号就是句柄。
    一款优质的游戏一般都会有着个性化的图标与鼠标光标,而为了在我们自己开发的游戏中使用这样个性化的图标与光标资源,我们就会与图标句柄(HICON)和光标句柄(HCURSOR)打交道。

    Windows程序的“邮局”——消息与消息队列

    Windows程序设计是一种基于事件驱动方式的程序设计模式,Windows程序与操作系统间的通信主要是基于消息的。

    每单击一次鼠标或按键,操作系统就会感知事件,将事件包装成消息,投递到消息队列中,然后程序从消息队列中取出消息并响应。
    在这个处理过程中,操作系统也会给游戏程序“发送消息”,即操作系统调用程序代码中专门负责处理消息的“窗口过程函数”。

    Windows程序运行的机制:Windows将产生的消息依次放到消息队列中,而应用程序则通过一个消息循环不断地从消息队列中取出消息并进行响应。

    消息的表现形式——MSG结构体

    定义:

    typedef struct tagMSG{	//msg
    	HWND hwnd;	//指定消息所属窗口
    	UINT message;	//指定消息的标识符
    	WPARAM wParam;	//指定此msg的附加信息
    	LPARAM lParam;	//指定此msg的附加信息
    	DWORD time;	//指定投递到消息队列的时间
    	POINT pt;	//指定投递到消息队列中时鼠标的当前位置
    } MSG;
    

    第一个参数:通常一个消息都是与某个窗口相关联的。(例在某个活动窗口按下鼠标左键,产生的按键消息就是发给这个窗口的)

    第二个参数:在Windows中,消息由一个数值来表示,不同消息对应着不同数值。由于数值记忆不方便,所以Windows将消息对应的数值定义为WM_XXX宏的形式。(其中WM是Windows Message的缩写,XXX对应某种消息的英文拼写的大写形式)

    展开全文
  • 今日份的知识已摄入~ 想了解更多前沿测试开发技术:欢迎关注「第十届MTSC大会·上海」>>> 1个主会场+12大专场,大咖云集精英齐聚 12个专场包括: 知乎、物流、开源、游戏、酷家乐、音视频、客户端 服务端、数字经济...

    本文由5t5发表于TesterHome社区网站,点击原文链接可与作者直接交流。

    本次帖子单刀直入,直接说点,谨慎查阅。

    兼容性存在的意义

    很简单,就是为了把覆盖普及大众的机型上项目暴露出来的问题全部扼杀掉,有效的改善/避免用户流失。

    兼容性解决哪些问题

    解决适配问题

    适配产生的问题有很多,如:
    1、屏幕适配,迭代过程中的测试机显示正常,过大或过小的屏幕带来UI上可能存在较为明显的噪点/黑线,很影响美观;
    2、分辨率适配,诶?这跟屏幕适配不一个意思?肯定不是一个意思了啦,分辨率适配,是覆盖我们常说的(1920x1080)这一类的,主要是暴露我们常说的锚点问题,因为现在的项目都做了UI自适应/等比例适配的功能,查看在各不同的分辨率下显示是否正常,影响美观,改,影响使用,更得改;
    3、系统适配,此系统适配主要针对适配的是较新/最新的平台系统(Android/iOS/鸿蒙)等,各大厂商基于android魔改的定制系统有时升级后/原生Android升级之后也会存在一系列的问题,暴露crash,anr,闪退等问题,发现均列为高优先级进行解决,它代表的是一众此类机型使用均存在问题的;
    4、屏显适配,也有其他叫法,主要意思就是现在的屏幕显示规格存在水滴屏,折叠屏,刘海屏等等一系列奇形怪状的屏幕,他们的分辨率可能很正统,没有分辨率问题,但是却因为特殊的屏显方式对应UI本身有遮挡,显示不全对操作/美观影响较大会针对性机型去进行定制处理;
    5、品牌适配,这块多少有一些跟系统适配有相耦合的地方,覆盖现在尽可能多的手机品牌,这个不过多解释,根据公司需求还有现在的市场份额酌情去覆盖品牌方,【华为,vivo,oppo,魅族,小米…】;
    6、网络适配,联网方式的适配,没听错,联网方式按现在来说有2G/3G/4G/5G/wifi等等,一系列的网络链接方式,而移动平台本身网络器件也存在差异,会碰到一些手机存在同4G/运营商相同但是网络延迟对比之后有较大差异,严重的手机还有断流等问题,也能发现一些乱七八糟的问题,知道即可,一般不介入,因为迭代过程中,弱网测试还有运营商选择时会消化挺多。

    兼容性方案如何选型

    接下来我们来看看如何进兼容性方案的选型,又是测试擅长的兼容性测试场景设计。
    针对上面要解决的问题我们一一针对性的选择目标机器然后执行即可;
    但不同的是我们要考量到企业/部门投入的精力来进行,部门测试机选型不可能把上面的问题全部覆盖掉,那我们就要依照现有的市场份额去把所有的机器摘出来作为测试机来做部门内的兼容性测试机;
    可以理解为:

    参考的一些市场份额查询链接:百度流量研究院
    当然不止这一个,感兴趣的也可以贴一些在评论里,感谢分享了哈;

    兼容性方案【传统方式】

    传统方案:

    测试部门选了一堆测试机 → 拿来跑兼容性(手动跑)→ 挨个儿跑完以后 → 项目都能跑起来并且没有崩或者打不开的情况 → 完成,写报告。
    然后报告里面写一下测了哪些机器,表现如何,通过,敷衍,极其的敷衍;

    中规中矩:

    有理有据的选了测试机 → 手动跑兼容性测试(手动跑)并且专门要了挺长的周期去进行兼容测试 → 周期内仔细跑每个机器 → 有对应的兼容性通过准则(场景设计,跑通自己设计的场景之后才算该机器通过兼容性测试) → 完成,写报告。
    这样对比出来以上的优点突出的是:
    1、有合理的兼容性测试场景来约束测试机上的表现;
    2、有合理的周期去安排兼容性测试,颗粒度能放小,可以理解为每个机器能跑一定长的时间,保证一定的质量;
    3、测试机的选型也可以体现报告中,显得更专业;

    芜湖起飞:

    这个就高级一些了,现在有条件的企业会内部部门通过一轮兼容性测试之后上云,无论是自研云/三方云/公司搭建远程机柜均可,来自动跑兼容性测试,这样会更高效,这个就不多解释了。

    延伸💬

    兼容性测试过程中:
    1、有新机器上市/新系统大版本更新的机器,能买则买,不要给公司省钱;
    2、平时的兼容性测试方案毕竟是通用执行,开始就做好部门自身的兼容性方案执行方式,不要临时抱佛脚,虽说花不了多少时间,但是这种每次跑个兼容慌张的感觉并不好;
    3、平时的系统能不升级不要升级,不要root,root之后的权限已与平时用户使用的机器不同,进行兼容测试时后面测试过程权限提示表现会有不同,会失真;
    4、公司没有资管组的话,就要做好平时测试机的保护还有进行测试前一天尽可能的保证手机的电量充盈;
    想一想大概就这些,还有什么没想到的欢迎大家沟通哈,就这样,go home~

    本文由5t5发表于TesterHome社区网站,点击原文链接可与作者直接交流。


    今日份的知识已摄入~
    想了解更多前沿测试开发技术:欢迎关注「第十届MTSC大会·上海」>>>
    1个主会场+12大专场,大咖云集精英齐聚
    12个专场包括:
    知乎、物流、开源、游戏、酷家乐、音视频、客户端
    服务端、数字经济、效能提升、质量保障、智能化测试

    展开全文
  • 之前有很多人在后台说《从电子游戏历史看IC发展的助推剂》《80年代电子游戏及电脑游戏的发展历史》这两篇文章看的不是“太懂”,今天就把所有相关的资料都放出来,这样大家至少能把文章内容弄清楚,...
  • 自从3月离开360之后,已经很久没有出现在国内游戏圈里了,因为选择了在一家香港上市的游戏公司工作,这段时间一直在海外市场到处看,也花了不少时间思考整个游戏行业的发展历史和未来趋势,对比中国游戏市场和海外...
  • 仿写“跳一跳”微信小游戏

    千次阅读 2018-04-12 10:41:43
    在 2018 微信公开课 Pro 上,微信游戏产品总监孙春光指出,小游戏的累计用户达到了 3.1 亿(微信日活超过 9 亿)。 孙春光表示,2017 年移动游戏的自然人有 4 亿多,他们用 20 天就达到了这样一个数据。 作为微信小...
  • 一文教你从零开始设计并实现一个Java扫雷游戏

    千次阅读 多人点赞 2020-11-14 23:05:09
    背景:扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界面,每一处的细节都体现了扫雷的魅力。以JAVA语言作为开发环境...
  • 关注ITValue,查看企业级市场最新鲜、最具价值的报道!美团点评联合创始人王慧文曾在2013年的时候做了这样一件事—— 他把美国科技业的公司和中国的公...
  • 痛与教训,我所亲历的3个失败游戏创业公司

    千次阅读 多人点赞 2017-05-15 12:21:06
    霖哥的家里人对于我这种长期996加班的日子无法理解,也无法容忍,同时,我也有了一个更好的选择——  我遇到了一个草根的公司创始人,他一个人融资后,刚起步,四处找寻合适的合作伙伴。在跟他交谈以后,觉得他...
  • 随着网络游戏市场的进一步繁荣,人们对游戏软件关注度和性能要求越来越高。就拿几款热门手游来说,如果游戏使用...卓码软件测评小编就此进行简单分析,帮助大家更好的理解游戏软件性能测试。 一、游戏软件性能测试怎.
  • 13 万字 C 语言从入门到精通保姆教程2021 年版

    万次阅读 多人点赞 2021-06-07 12:25:01
    13 万字C语言保姆教程,从入门到精通。
  • 大学计算机系最努力的同学都是如何学习的?

    万次阅读 多人点赞 2021-06-21 09:15:04
    我上大学时,连续三年得过国家励志奖学金,英语过六,以为软考有用,还考了个软件设计师证书,以为四有用,也考了个软件测试工程师证书,看人家用c++写软件,自学MFC写了几个桌面小程序。 自以为很牛逼的去找...
  • 最早仅仅在电商领域“疯狂肆虐”,如今已经发展为“无处不在+层出不穷”……额,头疼! 起初只是简单易识破的刷单and薅羊毛,而现在却统统升级为...形势如此严峻,身处电商、社交、游戏以及金融等“欺诈重灾区”的成...
  • 性能调优》 《Spark大数据分析实战》 《Spark大数据实例开发教程》 《Spark快速大数据分析》 《大数据Spark企业级实战》 《从零开始学Storm 第2版》 《Storm技术内幕与大数据实战》 《Storm实时数据处理》 ...
  • 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛,人所共知。俄罗斯方块游戏简单的基本规则...
  • Python库之游戏开发及虚拟现实

    千次阅读 2020-12-09 02:50:31
    1、PyGame:简单的游戏开发功能库http://www.pygame.org * 提供了基于SDL的简单游戏开发功能及实现引擎* 理解游戏对外部输入的响应机制及角色构建和交互机制* Python游戏入门最主要的第三方库<>2、Panda3D:开源...
  • 看相关书籍,研究大师的比赛,这实际上是提升下棋时的思维过程,在努力改进决策。 我的很多思维方式都是通过国际象棋发展的,比如计划、解决问题的思维等能力。无论将来从事什么职业,这些能力都很实用。 我小的...
  • 而手机行业中游戏方面的利润所占比重较大,并且手机游戏大多数则是由Java语言开发研制的。所以我想顺应时代发展,用学到的Java知识对游戏进行一次深入的了解与创作。 Java语言在我们大学学习中占了很大的比重,其...
  • 简介:北京飞搜(FaceAll)科技有限公司是国家高新技术企业、中关村高新技术企业、北京市软件企业。公司成立于2015年,2016年获得华米科技(小米手环)公司千万天使轮投资,2017年获得青岛鼎源资产有限公司、合肥...
  • 前言: 高效读书,一张逻辑图带你读懂、读薄书中重点。 注:下面文字只是对逻辑思维图的”翻译“,节省时间,只看图即可。 ...切入“企业安全”的视角 ...企业安全是什么 ...企业安全包括哪些事情 ...生态级企业vs...
  • 完美结合,10款提升编程能力的游戏项目

    千次阅读 多人点赞 2022-04-02 21:59:23
    你是否记得以前的童年时代,你曾经花了一整天,有时甚至不吃饭来玩任天堂游戏(马里奥和魂斗罗....)的日子??? 真实一波童年回忆.... 不过,从那时起,游戏经历了巨大的转变,人工智能、虚拟现实、云计算等先进...
  • 贾浩楠 博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI“不会炒股的游戏开发不是好飞机修理工….”没抖机灵,这是真事!一开始我也不信,根本没人信。‍辞掉军火巨头旱涝保收的工作,0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,747
精华内容 17,498
热门标签
关键字:

企业级游戏理解