精华内容
下载资源
问答
  • C++win32窗口应用程序下的游戏工程,里面有很多注释,一般新手应该能学到些东西,注意不是MFC写的,学习游戏编程请尝试脱离MFC,这对你会有不少的好处~
  • Game Programming Patterns 游戏编程模式(pdf中文版完全版)
  • C++游戏编程入门.pdf

    千次下载 热门讨论 2012-12-10 22:14:12
    C++ 游戏编程入门教材 英文 影印 清晰版
  • 游戏编程模式中文版

    2017-03-24 00:14:19
    Game Programming Patterns 游戏编程模式 中英双语
  • 很多人都是因为游戏才喜欢上编程,以第三方人称射击游戏为兴趣引导,寓教于乐!本套课程采用C++与DX(11、9)结合,同时也支持虚幻引擎。课程适合有一定C++基础并对游戏安全感兴趣的朋友,临渊羡鱼不如归而结网,让...
  • 网上的《Windows游戏编程大师技巧》 中文版基本上是第一版,知识过时且翻译质量较差,此文档为正真的《Windows游戏编程大师技巧》 中文版 第二版,沙鹰译的,且相当清晰 故有80m的大小,分两卷压缩,第二卷搜一下就...
  • 3D游戏编程大师技巧.pdf

    千次下载 热门讨论 2014-03-02 10:03:58
    TRICKS OF THE 3D GAME PROGRAMMING GURUS [美] Andre LaMothe 著 李祥瑞 陈武 译 人民邮电出版社
  • 3D游戏编程大师技巧光盘源码

    热门讨论 2013-05-04 16:19:41
    3D游戏编程大师技巧源码
  •  《android4游戏编程入门经典》囊括了成为一名成功的android游戏开发者所需的全部知识。本书是一本可以信赖的指南,能够帮助你在移动游戏开发中迅速“升级”。学完本书并加以融会贯通,就能够编写出成功的android...
  • Visual.C++.MFC棋牌类游戏编程实例.pdf

    热门讨论 2013-07-22 14:54:35
    Visual.C++.MFC棋牌类游戏编程实例.pdf 我收集的资料,放在这里备份。
  • Windows游戏编程大师技巧(第二版) pdf

    千次下载 热门讨论 2010-08-05 11:31:57
    《windows游戏编程大师技巧》第二版pdf,网上只有第二版的chm和第一版的pdf哦...
  • 《逐梦旅程:Windows游戏编程之从零开始》 彩色样章。 配套源代码下载:http://pan.baidu.com/s/13PVB3 书籍维护页面:http://blog.csdn.net/poem_qianmo/article/details/12895487
  • 附录A 进阶游戏编程书籍总结与推荐

    千次阅读 2017-11-21 13:33:32
    很多游戏编程书籍都有一个通病, 一本书写完,读者看完之后,不知道下一步该如何前进。这里的附录就是让大家看完这本书后,知道自己接下来可以学习什么,如何进一步提升自己。为学习思路不清晰不科学的读者们指明一...
    章节导读
    很多游戏编程书籍都有一个通病, 一本书写完,读者看完之后,不知道下一步该如何前进。这里的附录就是让大家看完这本书后,知道自己接下来可以学习什么,如何进一步提升自己。为学习思路不清晰不科学的读者们指明一条康庄大道。
    所谓师傅领进门,修行在个人。读完这本书,以后的游戏开发之梦, 就要靠接下来给大家推荐的这些书籍和源代码为精神寄托了。
    想想看,如果从翻开这本书的第一页的那一刻开始算起,我们已经从对Windows下的编程一无所知,到目前可以熟练地C++&DirectX 代码随心所欲地构造出属于自己的三维游戏世界,这是一个质的飞跃。
    然而, 游戏编程的大门才刚刚为我们打开而已。想要创造出更加精美绝伦的游戏,还需要更多更优秀的书籍和代码来指引。
    这个附录中的内容, 就是在为了给大家指明以后的游戏编程道路中,哪个方面有哪些书具有参考和阅读的价值。

    因为列举和介绍的广泛, 每本都去自己专研是不太现实的事情,毕竟我们的精力有限。大型三维游戏的编写往往是一个团队花费数年时间才能完成的,团队中的一份子只在某特定领域有所造诣,做好自己分内的事情即可。所以,在3D 游戏编程领域入门之后,最好找到自己喜欢的一个具体方向去精研,去选择性地阅读与摄取知识。

    A.1 零基础游戏编程学习大体阶段概括

    第一阶段, C++ 的入门
    C++ 的入门学习首推《C++ Primer》。这本C++的经典之作完全可以让你从对编程语言一无所 知的编程小白,成长为略微了解

    C++的老手。
    想要走最短最有成效的学习路线,在这一阶段中了解基本的C++语法特性其实就够用了,并不用去纠结更深层次的知识,如模板、泛型、STL。这些更深一层的内容在游戏编程学习初期基本上涉及不到,在以后学游戏编程的过程中用到的时候,再翻翻书去现学现用,会更加事半功倍。
    如果你真是精力旺盛,看《C++ Primer》一本学C++还满足不了你, 《Effectrive C++》《More Effecitve C++》 

    《Effective STL》 《C++沉思录》等等一大堆C++著作一定可以填饱你的肚子。
    对于第一阶段,总结起来就是C++编程语言的学习。说浅它很浅, 一本《C++ Primer》或者大学的C++教程足矣(作者当年就是一本《C++程序设计教程》入的门) ; 说深它很深, C/C++是计算机高级编程语言的泰斗,讲解C++编程语言高级特性的专著数不胜数。总之,想要走最短最有成效的学习路线,在这一阶段中了解基本的C++语法特性其实就够用了,并不用去纠结更深层次的知识,如模板、泛型、STL。
    第二阶段, 熟悉windows 下的编程。
    第三阶段, Visual C++ 的学习
    看完本书前面的内容,第二阶段和第三阶段基本上算是可以过关了。所以在这里我们把重点放在百花齐放的第四阶段。

    第四阶段, 图形API与游戏引擎的学习
    走到这一阶段, 算是正式开始了游戏编程的学习。从这一阶段开始, 深入一点的游戏编程书籍基本上都是英文的了。
    很多学习游戏编程的朋友都应该有这样一个印象,国内很少能有一本有足够分量和水准的游戏编程书籍面世,而在国外,出版的游戏编程书籍却常常都能成为高水准的经典之作。而出版时间方面, 讲述新技术的游戏编程书籍往往在国外面世两年甚至三年之后,才可能会有中文版面世。因为国内写不出这样水平的著作来,所以需要从国外的出版社引进。而引进方面需要国内出版社与国外出版社之间的协商,需要一定的时间,而翻译成中文往往得花费一年甚至更久的时间。
    比如,我们就拿学习DirectX 必读的经典,我们俗称“红龙书”的《Introduction to 3D Game Programming with DirectX9.0》来看,这本书的中文译版为《DirectX 9.0 3D游戏开发编程基础》。这本DirectX 的经典之作《Introduction to 3D Game Programming with   DirectX 9.0》出版时间为2003 年6 月,而译文《DirectX 9.0 3D游戏开发编程基础》的出版时间为2007 年4 月, 中间的跨度为3年10个月,而且,后来《Introduction to 3D Game Programming with DirectX 9.0》出了第二
    版,基本上进行了完全的重写,主要是在讲可编程渲染线编程,而不是第一版中的固定功能渲染流水线编程。

    而只有像“红龙书”这样经典的书籍才有机会引进并翻译成中文, 一般的游戏编程书籍由于专业性很明显(比如专门讨论3D 地形编程的书),在国内受众很少,引进了不能保证销量,所以很少被引进。
    以上的这些无非是想向大家说明,游戏编程后面的学习,常常需要阅读原版的英文书籍( 一般SDK 文档, Samples 自然也是英语) 。其实,阅读原版的英文书籍对英语水平的要求没有想象中的那么高,书中并不会故意去用一些晦涩的单词,一般有大学英语四级的水平,就可以畅读原版游戏编程书籍和SDK 文档了。
    开始学习专门介绍游戏开发的教程〈有DirectX 和OpenGL 两条路可选,这里我们选择DirectX,DirectX 在国内为主流。推荐书籍为《DirectX 9.0 3D游戏开发编程基础》, 《Windows 游戏编程大师技巧》、《DirectX 游戏开发终极指南》等等。下面我们会详细探讨。

    另外需要注意的是,下面我们介绍的书籍和开源代码(3D 引擎、动画实现)都是针对引擎程序员的底层技术和引擎开发方向的。而对于游戏性程序员需要修习的主技能并非如此,游戏性程序员应该把功夫花在对某种引擎的炉火纯青的使用之上,再根据自身发展方向修习其他技艺(可偏美术和设计),如3D 建模( Technical Art 方向) 。

    A.2 Windows 游戏编程入门书籍推荐

    学习Windows 游戏编程不得不提的是一代游戏编程大师André LaMothe 的鸿篇巨著一一 《Windows 游戏编程大师技巧》

    《3D 游戏编程大师技巧》两部曲。
    值得一提的是《Windows 游戏编程大师技巧》的主题是关于Windows 2D 游戏编程的基础。它的内容过于陈旧,不建议使用这本书学习游戏编程。书中作为重点讲解的DirectDraw 在十年前发行的DirectX 8 中就已经被抛弃了。现在看这本书的话,主要是看其中的编程思想。
    然后是《3D 游戏编程大师技巧》,这本书可谓是理解3D 游戏程序的内部原理最经典的著作,每个对3D 程序有兴趣的朋友都应该读一下。书中的内容基本上是把目前流行的图形API 都实现了一次,而且解释得非常详细,十分值得一读。读完后,你会更加理解图形渲染管线的内部实现方式。

    A.3 游戏编程进阶书籍推荐

    A.3.1 DirectX 入门

    1. “红龙书” 第一版和第二版
    学习DirectX , 首推“红龙书”的第一版和第二版。第一版上面我们提到过,就是《Introduction  to 3D Game Programming with DirectX 9.0 》, 有中文版《DirectX 9.0 3D游戏开发编程基础》,主 要是讲解固定功能渲染流水线;

    “ 红龙书” 第一版中讲解的内容基本上在我们这本书中都做了更有条理更符合我们习惯的演绎,所以在读完本书之后,承接读下去的最好选择是更偏向于可编程渲染流水线介绍的“ 红龙书”的第二版

    《Introduction to 3D Game Programming with DirectX 9.0c A Shader Approach>。
    另外, 红龙书的作者Frank Luna 在2012 年出版了红龙书的DirectX 11 版本一一《Introduction to 3D Game Programming with DirectX 11 > , DirectX 11 有点像Windows 8 , 都是叫好不叫座, 短时间还不能普及,目前依旧是Direct 9.0c 的天下。
    2. 《DirectX 游戏开发终极指南》
    这本书的英文原版名为《Ultimate Game Programming With DirectX》, 教你如何用DirectX 9写出一个简单的第一人称射击游戏,还算是不错的DirectX 入门书籍, 书本的配套代码有一定的借鉴意义。
    专门介绍DirectX 的书籍其实是比较多的, 而且其实内容都大同小异,我们更多的是去看看它们的配套源代码。学完本书, 接下来去看“红龙书”的第二版《Introduction to 3D Game Programming with DirectX9.0c A Shader Approach 》, 去了解可编程渲染流水线, 是最好的选择。同样的,<Introduction to 3D Game Programming with DirectX9.0c A Shader Approach 》一书的配套源代码很有必要去研究和学习。
    接下来,我们介绍一下学完DirectX 基础知识后一些进阶的书籍。

    A.3.2 地形方面

    1. 《Focus On 3D Terrain Programming》
    这本书算是3D 场景的必备基础书, 主要是讲解外部场景如山水、风景的实现方法。这本书中讲解很多流行的算法,从最简单的、到优化过的都有对比和demo 。
    不过由于有一定的年代,现在比较流行的一些技术,如clipmap 没有介绍到。
    2. 《Real Time 3D Terrain Engines Using C++ And DX9》
    这是一本理论优秀,实践欠缺的地形书籍。非常全面地时论了关于地形渲染的各种技术, 至少应该把第5~9 章都浏览一遍。之后便可以到virtual terrain 查阅近期的地形渲染技术。
    3. 《Level of Detail for 3D Graphics》
    LOD 技术即Levels of Detail 的简称, 意为多细节层次。LOD 方面,阅读这本《Level of Detail for 3D Graphics》就够了。

    A.3.3 物理方面

    《Game Physics 》《游戏开发物理学( Physics for Game Developers )》以及《Game Physics Engine Development》都不错。
    1. <Game Physics>
    2. 《游戏开发物理学 (Physics for Game Developers) 》
    3. 《Game Physics Engine Development》
    这本书最好随时结合代码一起看, 因为书上的跳跃性有点大。
    4. 《实时碰撞检测算法技术(Real-time Collision Detection)》
    《Real-time Collision Detection》算是碰撞检测方面最好的书, 国内引进了中文版《实时碰撞检测算法技术》。
    另外,《3D Game Engine Design, 2nd 》的8 、9 章也值得一看, 除此之外,就是各种开源碰撞引擎,比如Bullet 。

    A.3.4 数学方面

    《3D 游戏与计算机图形学中的数学方法》,介绍了游戏数学的各个方面, 游戏编程数学方面,这本书足矣。

    A.3.5 引擎设计方面

    1. 《Game Engine Architecture》
    这本书算是游戏引擎方面最好的一本了, 它非常清楚和详细讲解了游戏引擎的架构, 而且包含大量丰富的细节,仔细读的话很有收获。亮点有三:
    •  讲解现代游戏引擎架构, 非常新的实例, 包括作者自己公司的引擎, 和商业引擎例,如Unreal 的实例。
    •  清楚的讲解实现细节,代码少而思想多, 往往一段话就可以让你了解某个部分的实现。
    •  在调试和性能测量引擎方面有很好的描述。
    2. <3D Game Engine Programming>
    这本书讲了游戏引擎的一个大概, 最重要的是提出了引擎平台无关性, 是游戏引擎的入门读物,但总的来说, 讲得比较浅。不能独当一面。
    3. 《Pro OGRE 3D Programming》
    这本书虽然只有200 多页,但是短小精悍, 可以让读者快速了解一个既有引擎的设计和构架。在这本书里面不仅仅是几个图形学的知识,更多的时候渗透着的软件工程的思想。
    4. 《3D Game Engine Design》
    这本书有一千多页, 讲解了游戏引擎设计的方方面面,是《3D Game Engine Architecture Engineering》更新版, 强烈推荐阅读。

    A.3.6 实时渲染方面

    《Real-Time Rendering 》, 没得说,就推荐这本拓宽实时渲染技术视野的好书,它对于实时渲染相关的各种技术都有涉及。不过想要读懂和啃透它,需要一定的功力。

    A.3.7 图形学方面

    以上对3D 计算机图形学的了解都是实践性的,要真正在3D 计算机图形学里游刃有余,则需要深厚的理论做基石。
    1. 《3D 计算机图形学》
    纯理论的教科书读本《3D 计算机图形学》,经典之作。
    2. 《3D Graphics for Game Programming》
    比较新的一本书,个人觉得是不错的游戏图形学入门书籍。
    3. 《计算机图形学几何工具算法详解》
    这本书介绍算法很多,但是错误也不少。
    4. 《3D 数学基础:图形与游戏开发(3D Math Primer for Graphics and Game Development)》
    这本书浅显易懂, 有中文引进版, 可作为三维数学的“速食”。
    5. 《Mathematics for 3D Game Programming&ComputerGraphics》
    这本书目前出到第三版了,比《3D Math Primer for Graphics and Game Development》深入一些,证明推理的数学气也浓一些,可作为专业的数学书与编程实践一个过渡的桥梁。内容涉猎也广,射线追踪,光照计算,可视裁剪,碰撞检测,多边形技术,阴影算法, 刚体物理,流体水波,数值方法,曲线曲面, 还真够丰富的。

    A.3.8 Al 方面

    1. 《游戏人工智能编程案例精粹》
    英文原版为《Programming Game AI by Example》,非常不错的一本书,程序示例很丰富。
    2. 《游戏开发中的人工智能》
    这本书适合科普,对AI 感兴趣的初学者看看会很受益。总的来说内容简介却也丰富, 而且比较有意思。

    3. 《Al 游戏引擎程序设计》
    这本书英文原版为《AI Game Engine Programming》。虽然说这是一本名不副实的书,并没有完全介绍一个“one for all ”类型的引擎,也没有具体算法讨论,但针对各种不同类型游戏的AI 设计做了详细介绍,可作为一本参考指导性书选择阅读。

    A.3.9 网络方面

    1. 《网络游戏服务器端编程》
    这本书涵盖了网络游戏服务器端编程的基本知识,从网络连接的基本知识开始,到具体的网络游戏服务器端设计与实现,算是网络游戏服务器端编程方面的一本不错的工具书。
    2. 《网络游戏客户端编程》
    与上面提到的《网络游戏服务器端编程》相辅相成的,自然还有一本讲客户端的《网络游戏客户端编程》。
    3. 《网络游戏开发》
    英文原版名称为《Developing Online Games:An Insider’s Guide 》, 就像名为反模式的书讲软件团队运营一样,这本书讲网络游戏的商业运作。这本书汇集了许多大型网络游戏开发的优秀经验,值得一读。
    4. 《网络游戏编程教程》
    个人认为讲得比较杂,也算是可以作为可用的学习参考资料。

    A.3.10 系列书籍方面

    1. 《游戏编程精粹》系列
    游戏编程杂文集《Game Programming Gems》 (游戏编程精粹)系列, 现在出到8 本了。
    这个系列的书有一定高度,由于内容涉及得过于广泛,而且比较深入难懂,文章质量参差不齐也不乏错误,选择性阅读就可以了。
    2 . 《GPU 精粹》系列
    《GPU 精粹》(《GPU Gems》)系列可谓是游戏图形学的圣经, 可惜的是自出了这第三卷以来, NVIDIA再没继续出了。它针对shader 和GPU 的内容比较多,建议喜欢华丽效果或者对于CPU负荷太重的问题,应该可以从这本书得到一些启发。值得一提的是,这套丛书现在可以从NVIDIA 的网站上直接看到在线版。
    3. 《ShaderX》系列
    高阶图形渲染系列书籍,约定是每年出版一本,在2013 年6 月份己经出了6 本,非常具有阅读和参考价值。

    4. 《Game Engine Gems 》系列
    这是关于引擎设计的新系列丛书, 约定是每年出一本, 在2013 年6 月份已经出版了两册。
    5. 《Al Programming Wisdom 》系列
    游戏Al 编程方面的系列书籍, 在2013 年6 月份已经出了4 本。

    A.3.11 策划方面

    1. 《Creating Emotion in Games:The Craft and Art of Emotioneering》
    在壮丽煌目的宏伟三维世界背后,在残酷的杀戮, 动人心魄的情节背后, 我们还需要什么来抓住玩家的心? 答对了, 就是情感( emotion ) 。真正打动人心的, 才是令人印象深刻的游戏作品。
    2. 《Ultimate Game Design:Building Game WorIds 》
    从名字可以看出, 这本书是写给关卡设计师的。在游戏设计方面还算不错的一本书,特别是讲室外自然场景的构建方面, 颇有可取之处。

    A.3.12 美工方面

    1. 《The Animator’s Survival Kit》
    这本书绝对是动画师必备手册, 奥斯卡奖得主一生的经验之谈, DreamWorks 的动画师以及Disney 的资深动画师都大力推荐。虽然是英文书籍, 但是以图片为主,外语要求很低。通过这本书的学习, 对各种类型的动画工作,包括传统动画、三维动画、Flash 动画都有非常大的指导意义。
    2. 《The Dark Side of Game Texturing》
    用Photoshop 制作材质贴图, 还真有些学问。

    A.3.13 小说&电影

    1 . 《DOOM 启世录》
    英文原版为《 Masters of DOOM:How Two Guys Created an Empire and Transformed Pop Culture 》
    勿庸置疑,在计算机界历史是英雄们所推动的。这本书真实地记录了这些尘世英雄的所为所思。
    看完这本书, 请坚定自己的信念, 找回曾经的狂热,不要虚度自己的一生!

    2. 《独立游戏大电影》
    《独立游戏大电影》, 英文名为《Indie Game: The Movie》,难得一见的记录游戏开发之路的电影,道出了无数独立游戏开发者的心声。
    感谢这部影片能把这些独一无二的故事记录下来。他们都是一个人,或者是分隔两地的两个人,为了心中的梦想,不懈地坚持努力, 虽然他们也会有无助、挫败的时候,但是,他们最终都坚持下来了。
    看到Jonathan Blow 一个人站在昏暗的房间里,对面显示器啪啪啪地敲着代码,那个侧面的身影, 孤独又坚强。
    愿以这部影片为寄托,纪念那些执着的日子,无论过去还是将来。

    A.3.14 其他

    这一部分算是软件工程方面的书籍的列举,不局限于游戏编程。就列举一些吧,其实豆瓣编程书籍榜单里面有更详细更丰富的书单:
    《大话设计模式》《重构·改善既有代码的设计》《代码大全》《Effective C++》《C++沉思录》《程序员修炼之道》
    《编程之美:微软技术面试心得》《设计模式:可复用面向对象软件的基础》。

    A.4 开源游戏源代码推荐

    1. lrrlicht
    著名的鬼火引擎,源代码优雅,高效, 且不故弄玄虚。值得每个C++程序员一读, 并不限于 图形编程者。它的周边中也有不少轻量级的东西,如Lightfeather 扩展引擎、ICE 、IrrlichtRPG 、 IrrWizard ,还有IrrEdit、IrrKlang 、IrrXML 可用。(可能是为了效率原因,很多开源作者往往喜欢 自己写XML 解析库,如以上的IrrXML 库,即使有现成的tinyXML 库可用。这真会让Tomcat 里 面塞Axis, Axis 里面塞只JUDDI ,弄得像俄罗斯套娃玩具的JavaWebServiceCoder 们汗颜。)
    2. OGRE
    排名第一的开源图形引擎,当然规模是很大的,周边也很多。除了以C#写就的OgreStudio , ofusion 嵌入3DSMAX 作为WYSWYG 式的三维编辑器也是棒棒的,特别是其几个场景、地形插件 值得研究。以至于《Pro OGRE 3D Programming 》一书专论其用法。搜狐的《天龙八部》游戏就是 以其作为图形引擎,当然还另外开发了引擎插块。
    3. RakNet
    基于UDI 的网络库,还能支持声音传输。和OpenVision 结合起来做个视聊程序,或许是个很 棒的选择。
    4 . Blender
    声誉最盛的开源三维动画软件,还带着一个游戏引擎。虽然操作以快捷键驱动,也就是说要背上百来个快捷键才能熟练使用。但是作为从商业代码变为开源之作,严重威胁着三维商业巨头,它历经十年锤炼,代码达百万行。此代码只应天上有,人间哪得几回看,怎可不作为长期的源码参考?
    5 . 风魂
    二维图形库,云风大哥的成名之作。虽然不代表其最高水平(最高水平作为商业代码保存在广州网易互动的SVN 里呢),但是也可以一仰风采了。
    6 . 圣剑英雄传
    二维RPG ,几个作者己成为成都锦天的主力程序员。锦天的老总从一百万发家, 三年时间身价过亿,也是一代枭雄了。这份代码作为几年前的学生作品也算可以了,因为一个工程讲究的是四平八稳,并不一定要哪个模块多么出彩。
    7 . Yake
    比较好的轻量级游戏框架,源代码有一定的参考价值。
    8. Quake 与Doom
    Quake 和Doom 系列游戏源码,强烈推荐大家阅读,非常经典。卡马克这种开源的黑客精神就值得赞许。把商业源代码放出来,走自己的创新之路,让别人追去吧。Quake 与Unreal 引擎的三维编辑器是现在所有编辑器的鼻祖,非常有必要好好研究研究。
    9. Nvidia SDK9.X
    三维图形编程的大宝库,这些Diret3D 与OpenGL 的示例程序都是用来展示其最新的显卡技术的。硬件厂商往往对软件产品不甚在意,源代码给你看,东西给你用去吧, 学完了还得买我的硬件。Intel 的编译器, PhysX 物理引擎大概也都是这样。Havok 会把它的Havok 物理引擎免费给别人用吗?别说试用版,连个demo 都看不到。所以这套SDK 的内容可比MSDirectXSDK 里面那些入门
    级的示例酷多了,反正对很多游戏编程爱好者而言是如获至宝, 三月不知愁滋味。







    展开全文
  • Windows游戏编程大师技巧

    热门讨论 2012-04-28 09:23:55
    Windows游戏编程大师技巧 2D和3D游戏编程技巧。 另一个资源中上传了其配套代码。
  • 游戏编程入门步骤,想不到吧.

    千次阅读 2018-05-26 15:00:56
    经常有人问,没有编程经验的人该如何开始开发游戏。这篇文章是针对那些想要开发游戏,但几乎没有编程经验的人。事实上,我假设读者没有任何编程经验。我主要讨论游戏开发的程序和设计方面,而不是艺术性。我也不准备...
    经常有人问,没有编程经验的人该如何开始开发游戏。
    
    这篇文章是针对那些想要开发游戏,但几乎没有编程经验的人。事实上,我假设读者没有任何编程经验。我主要讨论游戏开发的程序和设计方面,而不是艺术性。我也不准备讲述如何进入游戏行业(这方面已经有足够的资料),而只是让你逐步的开始开发自己的游戏。最后,我所指出的这条道路也并不能作为唯一的,或是最好的路径来学习开发游戏,但至少对我和一些人很有用。


    选择一门语言
    你要做的第一件事就是选择一门开发语言。你有很多选择,包括Basic,Pascal,C,C++,Java,等等。也经常会有人争论对于初学者那一门语言是最好的。对于这一系列流行语言的讨论,你可以参看John Hattan的著作,What Language Do I Use?(我用什么语言?)
    我的建议是以C和C++开始。有些人会说这些语言对初学者来说太高级了,但因为我自己就是学C++,我并不同意这一说法。而且,C/C++是当今使用最广泛的语言(译者认为应该是汉语。。。),所以你可以找到大量学习资料和帮助。你先学C或C++都无所谓,因为只要学了一个,再学另外一个就很容易。但是,如果你先学C++,请保证在学习面向对象编程之前能理解和使用过程编程(等编程熟练再去学习类)。(译者:C是过程性语言,C++是面向对象语言)
    如果你开始学习C/C++,发现太难,那再学一个简单一点的也没关系,比如Basic或Pascal。但是我真的认为,如果你坚持努力,而且有好的资料,学C/C++应该没有太大问题。
    你的下一个问题可能会是:“我该怎么学C/C++?”我很高兴你这样问。最好的办法是上课。有老师可以回答你的问题,帮助你产生很大进步,编程练习作业也可以保证你能用到所学的东西。
    如果你不觉得上课是个好主意,那么就买一些好书。不要花太多时间去选一本什么“超级宝典”或“万用全书”,因为你最终可能会买几本。我建议你去一家书店,然后拿几本比较入眼的C或C++书看,直到找到一本或几本你能看懂,并且可以拿来学习的。
    同时,你可能会想要一些更深入的,或者一些材料,但是你一旦对于这门语言有了一些了解,我相信你应该有自己更好的选择。
    在这里,我有必要花一些时间,来说我看到很多初学者所关心的一个事情,特别是年轻人:没有钱买书和其他东西。首先,有很多免费资源可以利用,图书馆,Macmillan Computer Publishing ,有成千上百的编程书籍。但是如果你真的想要成为一个好的程序员,还是应该投入一部分资金。应当想方设法(合法的)帮助你弄到一些钱。
    网上也有很多C/C++的学习指南。但是我认为那只能作为补充而不是你自学的主要资源。

    选择正确的编译器
    你写的程序,或者代码,是以文本方式储存的,你甚至可以用记事本写C/C++程序。但是总需要有东西把他们转换成为可执行文件。对于C和C++,那就是编译器。
    可用的编译器有好多种,包括很多免费的。选择一款自己适合的编译器很重要,免费的编译器就有这样的好处,你可以把它们试个遍,然后从中选择自己最喜欢的。然而,免费编译器比起商业版,可能会缺失一些功能和大部分服务。幸运的是,多数商业版编译器也兼售介绍版或学习版,这要便宜得多,通常功能却不见得少,唯一的限制是你不能发布用它编译的程序(短时间内你也根本用不着)。
    总之,选择编译器取决于你能花多少钱,用什么操作系统,和为什么平台开发。
    这里个人推荐vs网上有免费的密钥.

    选择开发平台
    尽管最终你很可能为好几个平台开发,总要先选择一个来学。当你在学这门语言,还没有接触到图像的时候,你可能会想使用非图形用户界面的操作系统,比如DOS,Unix.这样可以避免接触高层,比如windows编程,让你集中精力学习语言本身。
    一旦你做好开发游戏的准备,那么,应该考虑是否改变平台,让我们来看看每个选项的特征。
    windows
    如果你想成为游戏行业的专家,或者如果你想让许多人来玩你开发的游戏,那么,这就是你要选择的平台。因为多数你的用户使用windows,而且现在我也看不出有什么改变的迹象。当今大多数的windows游戏都是由一种你可能听说过技术DirectX开发的。你可以DirextX这个库直接访问硬件,这意味着你可以开发高性能的游戏。
    DOS
    DOS过去是占统治地位的游戏平台,但是已经一去不复返了。尽管可能有一些特殊爱好者还在为DOS开发游戏,现在没有一个为DOS开发的商业游戏,他也将继续衰落,直到微软不再支持。如果你只是想开发游戏,还是不要选择DOS,如果你非要这么做,也不要太久。记住:由于存在大量DOS游戏开发的书,可能还有人辩护从这些书中学习DOS游戏开发。但是,windows游戏开发的书越来越多,那些辩解也变得越来越无力。
    Linux
    Linux是Unix的一种,由于很多原因后来变得流行,包括稳定性,价格,和反微软情绪。尽管Linux用户还是相当少,但是围绕着他的热情和不断增长的市场潜力使其也成为不错的选择。
    Macintosh
    MAC有大量忠实粉丝并不能说明什么,几乎每一个和我讨论的MAC狂热者都需要更多更好的游戏。我没有见过多少MAC游戏开发资源,但我相信还是有的,因此这也是一个选择。
    consoles
    console(就是PS,N64,DC等等)的游戏市场十分巨大,当然console游戏开发的前景也不错。然而以非商业的形式开发console游戏,出于各种原因,在现在似乎行不通。如果你开发console,很可能是在被商业游戏开发组雇用之后。


    开始进入主题
    现在是时候讨论开发游戏了。简单起见,我假设你选择用C/C++在windows平台开发,可能你选择别的,但大多数我说的还是有用的。
    首先,甚至在你打算开始开发游戏之前,你必须很好掌握C和C++.你应该懂指针,数组,结构体,函数,可能还有类。如果你精通他们,就可以开始做游戏了。
    这篇文章可能不能教会你所有关于开发游戏的东西。幸运的是,也没有这个必要。这方面有很多书,网上也有很多指南。GameDev.net应该有所有你想要的东西。
    在这里我只建议你怎么开始:
    找一本或几本书。对于windows游戏开发初学者,Tricks of the Windows Game Programming Gurus是个完美的开始。除此之外,还有许多好书.读透这些书,试试所有的例子,不懂得部分多读几遍。
    网上指南作为补充。除了弄清书上读到的,他们还涉及一些书上没有谈及的主题。
    向老师寻求帮助。如果你不能在书上或指南找到问题的答案,好好利用我们的论坛和聊天室。那里有好多专家愿意帮助别人。
    这些并不是要你按照顺序执行的,而是可以同时并且不断的重复执行。
    光学习还是不够的,你必须运用你所学到的。从一个小游戏开始,然后在这个基础上前进。你可以看一下Geoff Howland's 的著作: How do I Make Games? A Path to Game Development.
    开始,自己独立工作。不要急着加入团队,那样只会减缓学习过程。而且一旦你有了自己的几个游戏,你可以为团队做出更大的贡献。
    还有关于书,你应该不仅仅看游戏开发的书。为了能够开发出你看到商店出售的游戏,你应该钻研比大多数游戏开发书籍更高级的一些主题。有一些可以在网上找到,但你也应该选一些图形学,人工智能,网络,物理学等方面的书。计算机科学学位看来唾手可得,但因为你被迫上这些课的时候可能认为他们和游戏开发无关-你错了!
    不要只积累知识,用它
    你永远不会知道会理解一些东西知道你是用他们。用你学的东西作些演示。做作书上的练习。
    带着思考,玩一些不同的游戏
    这样做会使你做出更好的游戏。而且可以减轻编程的枯燥。
    帮助别人
    能帮别人的地方尽量帮助别人,教别人的过程中自己会学到更多。
    有始有终
    不要有这样的想法:“我能够完成这个游戏了,但是我又有一个新的想法,那就直接做下一个。”你可以学得更多如果你完成他,你也可以用事实证明你不是只会空谈。所以,尽量不要做很大很复杂的游戏,直到你有了一定经验。
    开始吧!可能你不是很了解,但是至少应该知道如何开始这条道路,找多些资料,加上多年努力工作,一定会实现!
    展开全文
  • 几个JAVA手机游戏编程源代码
  • Python菜鸟快乐游戏编程_pygame

    千人学习 2020-09-17 15:44:16
    此课程目的是激发大家对编程兴趣,给广大Python入门初学者带来无穷乐趣。 游戏涉及童年玩过经典小游戏,包括贪吃蛇,消消乐,俄罗斯方块,植物大战僵尸,扫雷等等。视频的参考资料可下载脚本。脚本已经编译好,可...
  • 【游戏开发】C++游戏编程实例

    万次阅读 多人点赞 2018-09-11 09:44:18
    网络游戏开发分为:服务器编程、客户端编程、人工智能、数据库管理、游戏策划、美工设计、音乐特效等。 大型游戏往往需要团队合作开发,因此面向对象的编程思想在网络游戏中得到了广泛应用。 游戏开发基本流程:...

    网络游戏开发分为:服务器编程、客户端编程、人工智能、数据库管理、游戏策划、美工设计、音乐特效等。

    大型游戏往往需要团队合作开发,因此面向对象的编程思想在网络游戏中得到了广泛应用。

    游戏开发基本流程:游戏初始化——游戏实现——游戏结束。

    游戏初始化:加载游戏内容的缓存,如游戏人物、背景模型、音乐等素材,并初始化相关参数。

    游戏实现:用户操作+游戏逻辑过程+游戏内容渲染。

    游戏结束:释放游戏初始化时加载的缓存。

    注:如果游戏结束时,不释放动态分配的缓存所用的内存空间,系统会弹出内存泄漏警告对话框。

     

    简单的游戏过程模拟程序:

    当按下A、D键,人物分别向左向右移动。

    enum CHARACTER_STATE{STATE_LIVE=0,STATE_DEAD};//枚举状态生/死
    enum CHARACTER_ACTION{ACTION_IDLE=0,ACTION_MOVE};//枚举动作静/动
    enum CHARACTER_EVENT{EVENT_EMPTY=0,EVENT_ATTACKED,EVENT_RESTART};//枚举事件空/被攻击/复活
    #include <conio.h>    //运用getch()
    #include <stdio.h>    //运用输出函数
    void main()
    {
    	int _pos=0;    //初始化位置
    	int _state=STATE_LIVE;    //初始化状态
    	int _action=ACTION_IDLE;  //初始化动作
    	int _event=EVENT_EMPTY;   //初始化事件
    
    	int _key;    //声明按键
    	while(1)
    	{
    		printf("Idel at position:%d\n",_pos);
    		_action=ACTION_IDLE;
    		//fflush(stdin);
    		_key=getch();
    		//scanf("%c",&_key);
    
    		if(_key=='E')    //按E键退出
    		{
    			break;
    		}
    		if(_key=='A')    //A键左移
    		{
    			_action=ACTION_MOVE;
    			_pos--;
    		}
    		if(_key=='D')    //D键右移
    		{
    			_action=ACTION_MOVE;
    			_pos++;
    		}
    
    		switch(_action)
    		{
    		case ACTION_IDLE:
    			printf("Idel at position:%d\n",_pos);
    			break;
    		case ACTION_MOVE:
    			printf("Walk at position:%d\n",_pos);
    			break;
    		}
    
    		switch(_state)
    		{
    		case STATE_LIVE:    //存活状态
    			switch(_event)    //事件
    			{
    			case EVENT_ATTACKED:    //被攻击
    				_state=STATE_DEAD;
    				break;
    			case EVENT_RESTART:    //复活
    				break;
    			}
    			break;
    
    		case STATE_DEAD:    //死亡状态
    			switch(_event)
    			{
    			case EVENT_ATTACKED:    //被攻击
    				break;
    			case EVENT_RESTART:
    				_state=STATE_LIVE;    //复活
    				break;
    			}
    			break;
    		}
    	}
    }

     

     

    以上程序可以拆分为3个文件:

    1.Character.h【声明人物类】、Character.cpp【封装成员函数】、GameMain.cpp【整体游戏逻辑】

    class Character
    {
    public:
    	Character();
    	~Character();
    	void Move(int _step);
    	void Idle();
    	void AI_Planning();
    	void Render();
    
    protected:
    	int _pos;
    	int _state;
    	int _action;
    	int _event;
    }

    2.Character.cpp

    #include "Character.h"
    Character::Character()//构造函数
    {
    	int _pos=0;    //初始化位置
    	int _state=STATE_LIVE;    //初始化状态
    	int _action=ACTION_IDLE;  //初始化动作
    	int _event=EVENT_EMPTY;   //初始化事件
    }
    
    Character::~Character()//析构函数
    {
    }
    
    void Character::Move(int _step)	//移动步数
    {
    	_action=ACTION_MOVE;
    	_pos+=_step;
    }
    
    void Character::Idle()		//静止
    {
    	_action=ACTION_IDLE;
    }
    
    void Character::AI_Planning()	//行为计划
    {	
    	switch(_state)
    	{
    		case STATE_LIVE:    //存活状态
    			switch(_event)    //事件
    			{
    			case EVENT_ATTACKED:    //被攻击
    				_state=STATE_DEAD;
    				break;
    			case EVENT_RESTART:    //复活
    				break;
    			}
    			break;
    
    		case STATE_DEAD:    //死亡状态
    			switch(_event)
    			{
    			case EVENT_ATTACKED:    //被攻击
    				break;
    			case EVENT_RESTART:
    				_state=STATE_LIVE;    //复活
    				break;
    			}
    			break;
    	}
    }
    
    void Character::Render()	//渲染
    {
    	switch(_action)			//动作
    		{
    		case ACTION_IDLE:	//静止
    			printf("Idel at position:%d\n",_pos);
    			break;
    		case ACTION_MOVE:	//移动
    			printf("Walk at position:%d\n",_pos);
    			break;
    		}
    }

    3.GameMain.cpp

    #include "Character.h"
    void main()
    {
    	Character player;	//定义玩家类
    	int _key;
    	while(1)
    	{
    		_key=getch();	//获取按键
    
    		if(_key=='E')    //按E键退出
    		{
    			break;
    		}
    		player.Idle();	//静止
    		if(_key=='A')    //A键左移
    		{
    			player.Move(-1);
    		}
    		if(_key=='D')    //D键右移
    		{
    			player.Move(1);
    		}
    		player.AI_Planning();	//行为计划
    		player.Render();	//渲染
    	}
    }

     

    展开全文
  • C++ 游戏编程电子书

    热门讨论 2011-02-24 13:19:45
    一共五部,这是第四部,下的时候注意了哦。C 游戏编程.part4
  • c++游戏编程初步(超简单)教学

    万次阅读 多人点赞 2019-02-21 19:49:37
    已经学了简单的编程,不做一些小游戏怎么行? 今天,我们就来了解一下关于做小游戏的技巧以及其中使用的函数; (本教程面向会循环嵌套,分支,一维数组,多重分支的人,如果不会请自行回避) 本次提供的是一个找宝藏...

    ·学了编程干什么?做题?做计算?
    NONONONONO~~~;
    已经学了简单的编程,不做一些小游戏怎么行?
    今天,我们就来了解一下关于做小游戏的技巧以及其中使用的函数;

    (本教程面向会循环嵌套,分支,一维数组,多重分支的人,如果不会请自行回避)

    本次提供的是一个找宝藏的游戏(也就是宝藏隐藏在某个地方,然后用键盘wasd操控主人物寻找的游戏,虽然没有任何玩的意义~~(如果有应该是5岁小孩玩的。。。。)~~ )

    首先来介绍一下键盘输入函数以及使用的头文件:
    1.

    #include<conio.h>
    a=getch();
    

    getch()是键盘输入的函数(无需回车),什么意思呢,就是立即输入立即反应(还是听不懂就从现实代码自己体会了)
    其中的a=getch()的意思是变量a由键盘输入(一定要字符变量);
    2.

    #include<windows.h>
    Sleep(1000);
    system("cls")
    

    Sleep就是用来延长时间的,1000就是一秒,cls是清屏
    3.

    #include<bits/stdc++.h>
    srand((int)time(0));
    int l=rand()%(n*n-1+1)+1;
    

    上面那个头文件是万能头(因为不知道原来是哪个头文件),这个函数的作用就是随机出数,
    变量 L 将会得到一个随机分配的值,在rand()%(n*n-1+1)+1中,nn是最大值,1
    是最小值,也就是在1~n
    n内分配值;

    开始教学

    首先定义以下变量以及开始说的话

    cout<<"这是一个一群傻屌找宝藏的游戏 !没错!你没看错!\n\n";
    	Sleep(3000);
    	system("cls");
    	cout<<"选择模式:1.简单(有留下走路痕迹)   2.困难(没有留下)" ;
    	int d;
    	cin>>d; //难度
    	system("cls");
    	int n,k=1;//n是棋盘大小,k是步数
    	srand((int)time(0));//介绍过了,是生成随机数
    	int l=rand()%(n*n-1+1)+1;
    	cin>>n;
    	char b[10001];//用于键盘输入的字符数组
    	int p=(n*n)/2;//设置角色起始位置(没多大意义)
    	char a[n*n];//棋盘内容
    	int s=n*n;
    

    然后就是棋盘初始化:

    for(int i=1;i<=s;i++){//输出初始化
    		if(d==1){
    			a[i]='#';
    		}	
    		if(d==2){//难度2
    			a[i]='*';
    		}
    	}	
    for(int i=1;i<=s;i++){//输出
    		a[i]='#';
    		cout<<" ";//加空格,看起来舒服
    		cout<<a[i];
    		if(i%n==0){
    			cout<<endl;
    		}
    	}
    

    效果如下:
    在这里插入图片描述
    然后就是其中的键盘输入:

    while(k!=0){
    		k++;//键盘输入第k次,也就是步数
    		switch(b[k]=getch()){
    			case 'd':a[p+1]='*'//切换新的位置;p++;break;//往右走
    			case 'w':a[p-n]='*'//切换新的位置;p=p-n;break;//往上走
    			case 's':a[p+n]='*'//切换新的位置;p=p+n;break;//往下走
    			case 'a':a[p-1]='*'//切换新的位置;p--;break;//往左走
    		}}
    

    接下来就是主要代码了,如下:

    system("cls");//清屏
    		for(int i=1;i<=s;i++){
    			cout<<" ";	//间隔,为了美化
    			if(i==p){
    				cout<<"@";//角色位置;
    				if(p==l){
    				system("cls");//胜利条件
    				cout<<"你赢了";	
    				Sleep(1000);
    				return 0;
    			}
    				if(i%n==0){
    				cout<<endl;//方阵组成,每n行回车一次
    			}
    			continue;//防止重复,直接开启下一轮循环
    			}
    			cout<<a[i];//输出目前棋盘
    			if(i%n==0){
    				cout<<endl;//防止重复,直接开启下一轮循环
    			}
    		}
    		if(d==1){//作为简单模式的提示
    		if(p/n==l/n){
    			if(p<l){
    				cout<<"提示:在右边"<<endl;
    				cout<<"使用步数:"<<k; 
    			}
    			if(p>l){
    				cout<<"提示:在左边"<<endl;
    				cout<<"使用步数:"<<k; 
    			}
    			continue;
    		}
    		if(p<l){	
    			cout<<"提示:在下边"<<endl;
    		}	
    		if(p>l){
    			cout<<"提示:在上边"<<endl;
    		} 
    		}
    		cout<<"使用步数:"<<k; //步数
    }
    

    将这些代码组合,得到这样的效果(自制垃圾游戏,dalao勿喷)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    现在是全部的代码:

    #include<iostream>
    #include<bits/stdc++.h>
    #include<conio.h>
    #include<stdio.h>
    #include<windows.h>
    using namespace std;
    int main(){
    	cout<<"这是一个一群傻屌找宝藏的游戏 !没错!你没看错!\n\n";
    	Sleep(3000);
    	system("cls");
    	cout<<"选择模式:1.简单(有留下走路痕迹)   2.困难(没有留下)" ;
    	int d;
    	cin>>d; 
    	system("cls");
    	int n,k=1;
    	cout<<"选择棋盘大小:";	
    	cin>>n;
    	system("cls");	
    	srand((int)time(0));
    	int l=rand()%(n*n-1+1)+1;	
    	char b[10001];
    	int p=(n*n)/2;
    	char a[n*n];
    	int s=n*n;
    	for(int i=1;i<=s;i++){
    		if(d==1){
    			a[i]='#';
    		}	
    		if(d==2){
    			a[i]='*';
    		}
    	}	
    	a[p]='*';
    	for(int i=1;i<=s;i++){
    		cout<<" ";
    		cout<<a[i];
    		if(i%n==0){
    			cout<<endl;
    		}
    	}
    	while(k!=0){
    		k++;
    		switch(b[k]=getch()){
    			case 'd':a[p+1]='*';p++;break;
    			case 'w':a[p-n]='*';p=p-n;break;
    			case 's':a[p+n]='*';p=p+n;break;
    			case 'a':a[p-1]='*';p--;break;
    		}
    		system("cls");
    		for(int i=1;i<=s;i++){
    			cout<<" ";	
    			if(i==p){
    				cout<<"@";
    				if(p==l){
    				system("cls");
    				cout<<"你赢了";	
    				Sleep(1000);
    				return 0;
    			}
    				if(i%n==0){
    				cout<<endl;
    			}
    			continue;
    			}
    			cout<<a[i];
    			if(i%n==0){
    				cout<<endl;
    			}
    		}
    		if(d==1){
    		if(p/n==l/n){
    			if(p<l){
    				cout<<"提示:在右边"<<endl;
    				cout<<"使用步数:"<<k; 
    			}
    			if(p>l){
    				cout<<"提示:在左边"<<endl;
    				cout<<"使用步数:"<<k; 
    			}
    			continue;
    		}
    		if(p<l){	
    			cout<<"提示:在下边"<<endl;
    		}	
    		if(p>l){
    			cout<<"提示:在上边"<<endl;
    		} 
    		}
    		cout<<"使用步数:"<<k; 
    		
    }
    
    	return 0;
    }
    

    希望我写的博客对你有帮助;
    点个关注呗!点赞也行!

    展开全文
  • 如何学习游戏编程

    千次阅读 2019-02-28 10:31:25
    如何学习游戏编程开发
  • 也就是说游戏引擎只是对Directx等底层API的一种包装,方便使用,当然也提供了很多游戏编程里可能会用到的强大功能。 写游戏基本上是不得不使用引擎的,因为你没有必要从头造轮子,除非你打算显示一个图片就要手打上...
  • 你知道如何从零开始学c++游戏编程

    万次阅读 多人点赞 2018-03-06 20:57:03
    在软件开发中,游戏开发这个方向看起来...平台与编程语言选择首先,游戏开发的平台就有很多类型:个人主机平台:Windows、Linux、Mac OC;移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;专业主...
  • Python游戏编程入门

    热门讨论 2015-03-27 17:33:33
    本书不只是介绍游戏编程概念的相关内容,还深入到复杂的主题。全书共14章,依次介绍了使用Pygame、文件I/O、用户输入、数学和图形编程、位图图形、精灵动画、冲突检测、数组、计时和声音、编程逻辑、三角函数、随机...
  • 《PYTHON游戏编程入门》(More Python Programming for the Absolute Beginner)是 S.Harbour写的一本入门书籍,基于pygame本书每一个章节都通过一个小游戏来讲解一些游戏知识。读者可以通过和作者一起实现一些小...
  • .NET游戏编程入门经典——C#篇 pdf

    千次阅读 2018-08-04 12:51:44
    链接:https://pan.baidu.com/s/1-Va6YY4_ETK102Z4YkeFOQ 密码:ujmg 本书为完整版,以下为内容截图:  
  • C++游戏编程入门教程

    2010-02-17 21:56:28
    C++游戏编程入门教程C++游戏编程入门教程C++游戏编程入门教程C++游戏编程入门教程
  • 猜拳小游戏编程(python)

    千次阅读 2018-05-25 09:53:38
    '猜拳游戏:0代表石头,1代表剪刀,2代表布。e退出游戏' ) player = input ( '请出拳:0 ,1,2: \n ' ) if (player == 'e' or player == '0' or player == '1' or player == '2' ) : if ...
  • 《Android游戏编程之从零开始》书籍源码-Himi-李华明

    千次下载 热门讨论 2011-09-23 01:57:04
    此资源为《Android游戏编程之从零开始》书籍源码,书籍作者:李华明(Himi); 详情请到书籍作者博客:blog.csdn.net/xiaominghimi

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 308,766
精华内容 123,506
关键字:

游戏编程