找回密码
 立即注册
查看: 755|回复: 10

作为一个开发游戏的程序员应该专注哪些技术?

[复制链接]
发表于 2021-10-19 17:03 | 显示全部楼层 |阅读模式
做了几年flash webgame游戏界面UI,1,对UI确实没有什么感觉,2,现在很迷茫不知道该如何规划自己的技术发展,对制作游戏还是很感兴趣。
发表于 2021-10-19 17:08 | 显示全部楼层
做游戏开发13年了,说点我自己的感受。
1.新入行的游戏程序猿一般都从UI做起,因为UI开发中简单重复而琐碎的工作相对比较多。我的从业经历中,见过几个因为UI多次改版不堪其苦愤而离职的程序猿。
2.立志做游戏开发的程序猿往往是因为觉得自己算法牛B或者架构牛B,但是核心算法和系统架构这类重要的事情,一个负责人的管理者不会把它交给3年经历以下的程序猿,所以新入行以提升自身能力为主,不要还没学会走路就想跑步。
3.程序猿往往看不起UI开发,就是常说的对UI没感觉。个人觉得程序做哪方面的功能其实差别不大,关键是做好该做的事情、提升自己的能力,如果能力能胜任更多更高的工作内容,我相信一个明眼的上司会给你在工作内容和薪资上予以调整,如果他没看到你的提升,你可以找他沟通。抱怨、迷茫不会解决任何问题。
4.我的个人经历,初入行我也是做UI的(当年还是用C++和DX来开发pc游戏),做的过程中我发现游戏UI经常会变更需求甚至推翻了重新设计。我也不想每改版一次我就重新全部做一遍,于是就想办法把ui逻辑和ui视图分开(ui逻辑往往变化很小,只是视图会修改),另外UI经常会涉及到坐标调整,我就把坐标从配置文件中读取,如果调坐标直接改配置文件即可,连重新编译都不需要。慢慢的我发现我能预测到哪些地方将来会改,因为设计不合理,然后我发现在用程序实现之前就可以给策划提意见避免一些错误和不良设计的出现。到项目做完之后,我基本上整理出一套UI库,涵盖常用的控件,很方便的调整位置及配图。我的工作变的轻松,于是我就琢磨设计模式和重构,也有时间研究一点自己感兴趣的东西。新的项目我被分配做我更感兴趣的事情,但是我留下的UI代码很大部分可以用到新项目中。
5.想说的是代码其实无所谓用在哪里,能不断提升自己能力才是关键。给你的每件事认认真真做好做透,能力就会全面提升。有句古话说的好,一屋不扫,何以扫天下。
6.语言不是关键,类库也不是,分析问题解决问题的能力才是。我用C++10年,突然有项目要用C#,我边做边学,一样上手,差异的只是语法,解决问题的思路几乎没有差异。庖丁解牛,只要有把刀就行……
啰啰嗦嗦写了这么多,总结为一点,学好设计模式和重构。
设计模式好比独孤九剑,见招拆招。重构好比太极,无招胜有招。
 楼主| 发表于 2021-10-19 17:11 | 显示全部楼层
首先,不好给题主直接提供答案。
因为只有自己多去看看,才知道现在哪些技术比较有用,自己对哪些技术感兴趣。
其实像UE(用户体验),图形学、网游服务器、快速开发工具、下一代逻辑框架等等方面,都有太多值得学习研究的东西,有兴趣学习的话,有用的技术是学不完、学不透的。
问题的关键点是:题主感到了迷茫。其实题主的迷茫感不是个例,是目前浮躁的游戏行业普遍存在的现象,这种情况已经普遍到了大多数开发者自己都注意不到的程度。下面展开说说。
1、工作经验 ≠ 工作能力

多年以前游戏开发的蛮荒时代,游戏开发者经常需要自己造轮子,或是学习和改良前辈们所造的粗糙的轮子。在那个时代,只要用心把项目做好,就已经能够学到很多东西。
现在产业成熟了,技术的学习不像从前那么容易,拖个界面、做个碰撞效果就是动动手指头的事,软件园的楼下饭馆里随便抓一个人,很可能就会做。反复做这些皮毛的东西基本上无法继续提高。
拖界面三年,你还是只会拖界面而已;偶尔做一点优化或者改良,就觉得自己学到了很多,这其实都是错觉。



2、两种做事的方法

做事的方法有两个极端:一是先磨刀,再砍柴;二是不磨刀,凑合砍。
我们对学习方法的认识,一直在两个极端中摇摆。现在的时代更常采用第二种方式:用什么学什么,解决问题即可。其实这种做法有值得推崇的地方:灵活快速,但是务必记住在解决了眼下的问题之后,一定要再去把刀磨了
所谓磨刀,举个简单的例子,比如说在做UI动效的时候,用了一种很笨的方法,效率低还废资源。那么有没有更好的方法,能把动效做的又快又好呢?在工作中用到的功能,就有深入研究的价值。
3、有效学习 => 能力提升

如何学习呢?其实互联网时代真不愁学习的途径。人分多类,有人喜欢技术和学习本身,有人喜欢创造的乐趣的。举几个例子分别适用于不同的人:

    在项目中寻找工作流的痛点,总结问题并实现开发工具。(至今游戏圈里还小范围流传着一些经典的小工具和插件,都不知道作者是谁)做自己的业余开源项目或游戏,放在Github上。看到有趣、巧妙的软件或游戏,自己实现一个Demo。总结日常工作中的问题,放在博客上。像追剧一样追你感兴趣的博主,学习他所遇到和解决的问题。比如,咱们的专栏:游戏开发入门指南——Unity+ 当中有多个连载系列(目前就有一个系列正在连载)。学习一个完全陌生的领域。比如另一个流行的游戏引擎。学习偏基础的领域,一定会产生极大作用。C/C++,算法和操作系统。在知乎上回答100个技术问题。遇到不懂的问题要学透,然后努力回答。等等……
以上几点,能够抓住一两点就已经可以鹤立鸡群了,说起来并不是很难,重在坚持。

再次回到开头说的。题主的困扰绝对不是个例,是目前浮躁的游戏行业普遍存在的现象。我们要通过努力摆脱这个困境,Good luck。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-10-19 17:17 | 显示全部楼层
后台的话:
1. 标准C/C++
2. Linux/Unix系统编程
3. 分布式程序设计
4. 系统架构设计
5. AI
6. 物理,碰撞检测
7. 足够好的数据结构和算法知识
发表于 2021-10-19 17:23 | 显示全部楼层
不要先想应该会什么技术,个人建议先看一看一些游戏开发的教程,看一看别人是怎么做的,然后,记录一下什么技术,以及思路看,这样才可以更好的开发游戏。游戏开发实例教学之Flappy Bird制作详解
发表于 2021-10-19 17:32 | 显示全部楼层
Mark 先答一点

1.使用思维模型解决问题。
2.开发者最需要面向对象设计思维。
3.专注于命名,命名是定概念,概念确定了问题就解决了。
发表于 2021-10-19 17:39 | 显示全部楼层
推荐一个链接:So You Want to Be a Game Programmer?
发表于 2021-10-19 17:45 | 显示全部楼层
1)编程语言,数据库结构,算法,这个无论到哪里都逃不掉。
(2)至少掌握一种主流游戏客户端引擎技术。
地图技术,特效开发,Shader编写,网络编程,数据管理,AI行为决策树等。
(3)掌握常用游戏客户端开发的技术点,如寻路导航,
地图技术,特效开发,Shader编写,网络编程,数据管理,AI行为决策树等。
(4)学会调试项目,分析问题,优化性能。
(5)掌握主流框架的设计与实现,能组织团队协作与开发,做好管理。
(5)游戏服务器高性能高并发原理
(6)游戏服务器网络,协议,数据库,分布式。
(7)服务器框架设计与实现。
(8)主流服务器同步模式,帧同步与状态同步,断线重连等。
(9)linux内核基本原理,多进程,多线程,虚拟内存等。
(10)关注一些国外的最新的游戏技术与发展趋势。
发表于 2021-10-19 17:50 | 显示全部楼层
对于想从事游戏开发的同学,我的建议是:
如果你不是对游戏开发特别感兴趣,建议谨慎地选择这个行业!
如果你不是对游戏开发特别感兴趣,建议谨慎地选择这个行业!
如果你不是对游戏开发特别感兴趣,建议谨慎地选择这个行业!
重要的话说三遍,如果你还是想学习游戏开发,下面是正文:
如果你是上班族,或者想快速地熟悉 C++ 游戏服务器端的开发的话,建议:
1. 先学好 C++。
这类书很多。不建议看《C++ Primer》这样的大部头,掌握 C++ 常用语法就可以了。当然 C++ 原理性的东西还是需要了解一下,推荐看下《深度探索C++对象模型》。
2. 学好网络编程,做到熟练使用常见操作系统的 Socket API。
根据你的水平高低来选择,依次从低到高的书有:
尹圣雨的《TCP/IP网络编程》
游双的 《Linux 高性能服务器编程》
陈硕的《Linux 多线程服务端编程 使用 muduo C++ 网络库》。
看了后两本书,你还能学到一些 C++ 服务器程序框架、结构等一些套路,网上有同学分享出来了:
链接: https://pan.baidu.com/s/1uF3bWLwyA3PIxGU_NUS5XA  密码: weiw
3. 学一些游戏开发的知识
如果你需要实战的话,我这里有一套完整的可以编译、调试和部署的 MOBA 游戏的源码。
这是一款类似英雄联盟的 5V5 实时对战游戏,服务器端使用 C/C++ 开发,同时支持 Linux 和 Windows 系统部署;客户端使用 C# + Unity3D 开发。
我们先来看下这个游戏的内容吧,这是在我机器上编译后运行的效果图:
登录界面


进入后台配置的对战服务器:


设置自己的昵称:


支持新手教学、人机对战和联网对战:




部署在我的云主机上后,和女朋友一起对战的效果图:
ps~被我女朋友虐的体无完肤。。。。。。


服务器端有非常多的模块,代码质量非常高,这里先截一张主要模块的项目图示:




代码下载地址
链接: https://pan.baidu.com/s/1NsjZ2X9qqPKHFJao2DLweg  密码: 8w6g
总结起来,熟悉 C++ 游戏服务器开发,建立在熟悉 C++、网络通信、服务器开发常用套路上,其次才是游戏服务器本身的特性。
完整的书单在这里:

计算机必看经典书籍(含下载方式)内推大厂游戏开发岗位(含米哈游)戳这里:

需要内推大厂的同学看这里(含内推联系方式)
原创不易,有用的话记得点赞和关注 @张小方 呗~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-10-19 17:54 | 显示全部楼层
这个还要分前台和后台。
一般来说,前台需要专注界面UI、图像等部分的开发、后台需要注重服务器设计、网络编程。
前后台主要用的编程语言有:
页游的前台:html5、flash、javascrit ..
页游的后台:java、php、.net、C++ ..
端游前台:C++.
端游后台:C++、JAVA..
手游就不说了,类似,只是端上的编程现在主要是 obective c 、 JAVA
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 20:01 , Processed in 0.096466 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表