透过项目看程序-新手成长篇

程序员的重要性,决定了我们的钱途
    程序应该是美术画风和策划创意的完美实现,是游戏开发的基石。对项目的成败起至关重要的作用,尤其是在小公司。就这两三年有很多游戏死掉了,有的死于外挂;有的死于大量BUG;有的干脆就做不来东西。项目成败有很多因素,就程序而言,在游戏稳定性,流畅性,游戏感和性能等方面,起关键作用。游戏团队非常注重程序团队能力。

项目中的技术搭配,决定了有我们一席之地
    项目在制作过程中,选取技术的方针,简单说:
    1:选用主流技术
    2:满足项目需求,难度越低越好
    3:有难度的技术,范围越小越好

    以这3点可以看出, 平常论坛上讨论最热烈的就是我们需要学的,因为交流多,说明这项技术是主流普遍的。 因为在项目中有难度较大的工作,范围比较小,大部分的工作,并不是大家所想象的那么困难。所以对于新手来说也是有用武之地的。


项目开发中,程序员该如何成长(C++为例)

  第一阶段, 学习C++基础, 主要可以参考的书籍(已有比较好的基础跳过):
  1、<<C++ Primer>>不需要别人解释就能看懂,最大的障碍就是始终如一的耐心
  2、<<Effective C++>>、<<more Effective C++>>,这2个书中的知识都是C++开发中的普遍共识,是程序员间的默契,得真的读懂, C++的坑太多了。上面的知识领悟后,日常开发的需要,一般超不过这个范畴。再深入的C++学习,可以再以后的工作中,根据需要选修。 其他书还有如<<exceptional c++>>, <<more exceptional c++>>, <<insied the c++ object model>> <<the c++ standard library>>等等,在这个阶段,还需要有意识培养的能力有:调试问题的能力, 快速阅读英文的能力,发现问题,解决问题的能力。
    从刚入门到这个阶段完后,程序员的基本素质和良好的基础都已练就。加上有些许项目经验,往往薪水也会有不同程度的提升。 很多人在这个阶段就尝试跳槽改变自己的待遇,对于这一点,发表下自己的看法,供大家参考,先明确一个目标,是为以后自己长远升值或者找些好的搭档,做一个比较好的规划,而不是为了图新鲜,换个团队试试看。所以需要明确一些因素:
    1、技术在这个时候,对你来说重要性还很大,如果入门了,我也能按照自己的方式一步步,完善自己的知识体系。如果没有,那么可能还是两眼摸黑。 如果您在的团队给予了你这种方向感,那么它大概还是不错的,千万不要随意离开。
    2、团队的价值方向跟自己的是不是一样,现如今大家的生活压力都较大,游戏行业本身又是文化创新产业,时刻诞生着奇迹。很多公司的奖励制度,都是包含项目奖等诱人因素。但是这些东西,说实在能一下让你少奋斗多年;说不且实际,芸芸众多游戏公司,又有多少暴富的呢。再者公司成功了,你跟对老板和上司了吗。打算走这招,还是要跟对人。
    3、团队的氛围是不是适合, 如果同事关系不够和睦,那还是有机会,选择一个更适合自己发挥的地方掌握这些,基础好的,几个月到1年,稍微差点的,努力下2年也该不错了。

  第二阶段,在基础上扩大知识面
    游戏开发分很多种类,比如pc单机,页游,手游和端游(大型网游)。他们用的技术不太一样。所以这阶段选择自己的优先学习范围很重要。
    先拿端游为例,说下工种分类有:2d/3d引擎程序员,其他高级模块引擎程序员(数据库,网络,寻路,脚本殷勤等各类复用度很高的模块),高级游戏逻辑程序员,初级游戏逻辑程序员(脚本程序员)
    页游,跟端游的模式差不多,只是客户端运行的方式不一样。 
    而手游,也分在线和非在线。 在线的就会有网络,数据库等开发。非在线的则和单机游戏类似,主要是客户端图形渲染,物理模块,游戏逻辑开发。
    咱们大概分几类用到的技术:
    1:多线程   
    推荐阅读《Win32 多线程程序设计》,虽然已经步入64位时代,但是技术是一样的,读懂这个就够了。
    2:网络     
    看看《tcp ip协议详解》。了解协议后在window下,再看《windows 网络编程》尝试各种socket模型的练习,试试tcp是不是可靠的。为什么大家都说tcp是可靠的,我写的怎么会丢包,包颠倒等问题。实践出真知,尝试一下,就知道其中的奥秘。开发网络程序推荐一款抓包程序(winpacp),可以帮助你分析协议内容,网卡上通过的内容,它都能截获。
    3:数据库  
    服务器大都采用的是linux服务器,因此采用的数据库80%都是mysql,推荐看《高性能mysql》。再者mysql,oracle,sqlserver等关系数据库,大同小异,看这个书相当值,傻瓜式入门。不怕你不会,就怕你不看。
    以上3部分,也是普通软件行业,知识必备。所以有志于在程序方面有较好发展的,还是需要都掌握较好
    4:图形引擎开发  
    这块比较大,引用《如何学好游戏3D引擎编程》http://www.cnblogs.com/lai3d/archive/2011/05/07/2040090.html
    5:游戏逻辑开发  
    这块看似没有技术含量啊,但是这块最是吃功夫,看一个人对行业认识程度。比如商店系统,能方便单商品打折,能多整店打折,能热销现实,能实时方便修改价格等,看似简单,实在牵连到的细节太多,只能感叹,有经验的和没经验的,那就是不一样啊。再比如现在网络上流传的天龙源代码,看看技能系统,有多灵活与复杂,您就清楚这个是不是难度,有挑战了。
     6:其他各类模块  
     比如脚本系统,物理系统,AI系统,界面系统(如cegui)等,同样推荐大家找来天龙的源代码看看。
    在这部分,主要跟大家探讨的是根据自己的情况,选择技术侧重方向。咱们再从工作职责方面看,工种的分配不同的团队,会有些许差异,我尽量将大家见到的工种都列下:
    服务器程序员:多线程, 网络,数据库,游戏逻辑,脚本, AI,负责游戏服务器的架构搭建,实现各类服务器游戏逻辑功能,这个职位,最好还学习下Linux
    客户端程序员:多线程,脚本,界面,游戏逻辑, 负责客户端的架构搭建,实现各类客户端游戏逻辑功能
    3d引擎程序员:图形渲染,界面编辑,场景编辑器等客户端开发辅助工具
    工具程序员:  客服,策划,测试等提供相关辅助工具   
    脚本程序员: 在现有游戏架构下,开发脚本逻辑,可以实现,打怪做任务,节日活动等。
    注:有的公司逻辑是客户端和服务器分开开发,有的公司逻辑是客户端和服务器由一个人来开发,上面的分工也不见得都一样,不过所用技术都差不多

  第三阶段,用知识改变命运
    到现阶段,我们的技术储备,基本足以在团队中谋得一席之地,甚至于是技术的擎天博玉柱。所以该是创造收获的时候。但是一个人的力量是渺小的,找到适合自己发挥的归宿很重要。因此积累人脉,结交朋友.在日常工作中,我们只要做到以诚待人,认真对事,慢慢自己就会接触到,值得信赖的朋友和老板。
    祝大家在游戏业内,做出值得自己骄傲的产品。
    感叹游戏界,人才匮乏,一将难求,特将一些心得发布于此。为方便后来人学习,特把上面所提的书籍电子版,整理成册,放于QQ群共享内,欢迎大家加入,相互探讨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
程序可以模拟激光透过物体穿透雾霾成像的过程。具体步骤如下: 1. 定义模拟参数:定义激光器的参数,包括波长、功率、发射模式等;定义物体的参数,包括形状、大小、折射率等;定义雾霾的参数,包括密度、粒子大小等。 2. 生成物体模型:根据定义的物体参数生成三维模型,可以使用计算机辅助设计(CAD)软件或者编程语言生成。 3. 生成雾霾模型:根据定义的雾霾参数生成三维模型,可以使用计算机图形学(CG)软件或者编程语言生成。 4. 计算激光穿透:使用光线追踪(ray tracing)算法,模拟激光透过物体和雾霾的过程,计算出激光在物体和雾霾中的传播路径和衰减程度。 5. 生成成像结果:根据激光穿透的结果,生成透过物体和雾霾后的成像结果,可以使用计算机图形学(CG)软件或者编程语言生成。 下面是一个简单的 Python 模拟程序,用于演示激光透过物体穿透雾霾成像的过程: ```python import numpy as np # 定义模拟参数 wavelength = 532e-9 # 波长 power = 1e-3 # 功率 beam_width = 1e-3 # 光束宽度 object_shape = 'sphere' # 物体形状 object_size = 10e-3 # 物体大小 object_refraction = 1.5 # 物体折射率 fog_density = 0.1 # 雾霾密度 fog_particle_size = 1e-6 # 雾霾粒子大小 # 生成物体模型 if object_shape == 'sphere': x, y, z = np.ogrid[-object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j] r = np.sqrt(x**2 + y**2 + z**2) object_model = (r <= object_size/2).astype(float) * object_refraction else: # TODO: 定义其他形状的物体模型 pass # 生成雾霾模型 x, y, z = np.ogrid[-object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j] density_model = np.exp(-fog_density * (x**2 + y**2 + z**2)) # 计算激光穿透 x, y, z = np.ogrid[-object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j] path_model = np.zeros((100, 100, 100)) for i in range(100): for j in range(100): for k in range(100): if object_model[i, j, k] == 0: # 空气中的光路 path_model[i, j, k] = 1 else: # 物体内的光路 path = np.exp(-object_model[i, j, k] * fog_density * (x**2 + y**2 + z**2)) path_model[i, j, k] = path[i, j, k] # 生成成像结果 x, y, z = np.ogrid[-object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j, -object_size/2:object_size/2:100j] result_model = path_model * density_model # 可视化结果 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x[result_model > 0], y[result_model > 0], z[result_model > 0], c=result_model[result_model > 0]) plt.show() ``` 在这个模拟程序中,我们使用了 NumPy 库来生成三维模型,并使用了 Matplotlib 库来可视化结果。你可以根据自己的需求修改模拟参数和模拟代码,生成适合自己的仿真模拟程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值