1、精通C++、STL及各种设计模式,熟悉各种数据结构和算法;
2、熟悉3D图形学原理,3D图形的常用技术,有较强的数学功底,有Shader编写经验;
3、有UE3、Gamebryo、Unity3D等一些游戏引擎使用经验。
游戏客户端,游戏库客户使用端,相对于游戏服务端的另一端,服务端是为游戏数据库服务的,而客户端就是游戏数据使用端。几乎现在任何游戏都有其客户端,用来连接服务端而为玩家服务。
服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。是实现游戏特色化的重要途径,也是最直接可以通过游戏表现出来的技术,比如要修改某个NPC的参数,重新加载后,在游戏内立刻体现出来
在这里,我给大家提供一些 C++ 项目的思路:
游戏,比如贪吃蛇、五子棋、坦克大战,是不是觉得很简单?给大一做的?那你可以单机的基础上,加入网络编程,去做一个联机的游戏,在这个过程你会涉及到网络编程、序列化、反序列化、协议制定、状态同步等知识!
TinySTL,也就是去模仿实现 STL 各种类库,比如 Vector、Map这些,从源码去理解 STL
网络库、网络编程,可以去写网络库,参考 muduo,或者 WebServer ,Redis Client、RPC、FTP 等和网络编程相关的
写一些库,比如 json、xml解析库、加解密、压缩解压缩等等这种小工具、类库,不仅能锻炼 C++ 编程,还能提高一些类似编译原理、密码学方向的知识。
不管你去写啥,只要不断的写,你就会感觉到编程能力的提升。
不要一开始就去看 leveldb 乃至 Chromium 之类的项目,或者抱着一堆书一本本地刷。
在这,顺便分享一份大学期间自己整理的电子书库,绝不是在网上那种打包下载的,而是自己需要学到某个方向知识的时候,去网上挨个找的,最后汇总而成。
汇集了编程语言(Java、C++、C、Python等等)、操作系统、计算机网络、系统架构、设计模式、程序员数学、测试、中间件 、前端开发、后台开发、网络编程、Linux使用及内核、数据库、Redis....等主流的编程学习书籍。