在游戏行业已经有多个年头了,在手机游戏行业混,所以项目多是中小型项目。从j2me单机游戏,商业模拟游戏,到java的wap网游。基本上这些都是用java开发的。不同的项目有不同的经验教训。我且先从几个方面说起。
1、软件项目是否易于动态开发甚至动态发布?很多j2ee项目,以及一些c/s架构的项目,很难做到这两点。在我做商业模拟游戏项目的时候,第一款联想笔
记本连锁专卖店项目,是采用c/s架构。服务器端要更改一点东西,就得重启。客户端要更改,也得重新连接。回合制游戏,还得经过好几个回合才能到需要的那
个界面。这样开发过程中,很多时间就这样浪费了。当时我觉得这个从技术上来讲,确实很浪费,但c/s可以做出很好的效果,c和s两端都有很大的提升空间,
以及技术发展空间。所以当时我还很看好这样的架构。当然这个时候也认识到b/s架构的威力,至少发布成本几乎为0,动态开发也是可能做到的。更改了新版
本,不需要重新下载既可以开始测试。后来boss决定转向b/s架构开发,这个时候我认为处理商业模拟游戏的早期,还没有足够多的项目经验,不足以制作产
品平台,所以就希望架构上能够做到动态开发。这个时候我的选择是mysql+javabean+jstl+js+css。由于不打算做商业模拟游戏开发引
擎,所以javabean部分设计成可以重用的,只有用户管理模拟模块,绝大部分的计算在数据库中用存储过程计算。这样,基本上开发商业模拟游戏,可以达
到动态开发和动态更新两个目的,开发成本大大降低。第一款游戏开发周期为4个月+,采用B/s架构开发了几款商业模拟游戏后,这个开发周期降为5周。基本
达到了我预期设定的1个月的目标。人月成本从12人月降为5人月。当然,由于早期还是以项目形式开发,没有考虑做成引擎或者开发平台,为今后的项目复用,
这样的代价是维护成本比较高。所以,应该还有第二种降低开发成本,而且降低维护成本的途径。先做开发平台,包括相关的开发工具和引擎,然后将可变的部分尽
量脚本化。通过固化引擎和工具,降低后续项目开发的代码量,大量缩减开发成本,这应该是一条更可取的路,但是前期的成本会更高。
2、软件项目代码量的控制。早先一个j2me游戏,<1万行的代码量,商业模拟游戏,1-3万行的代码量,wap网游,10万行左右的代码量。可
见,最后一个wap网游项目有点问题。这是我的一个大教训。对于wap网游这样的项目,合理的代码行数应该是3-5万行左右。这样才是一个中等游戏项目的
代码规模。为什么没有做到呢?1、我对年轻程序管理上以提建议为主,有些程序员总喜欢自己造轮子,比如该用quatz,硬要自己写一个timer的扩展,
我也不阻拦,只要能完成任务,不能防微杜渐,所以后面不好收拾。2、这个项目我介入的比较晚,早先的架构决定了很多都得自己重新开发来过。最终后果很严
重,项目的代码规模失去了控制。所以虽然这个项目最终性能还不错,但开发和维护成本都很高,毕竟,这么多代码摆在那里,何况里面不少并不高明的重复造轮子
的代码。记得前段时间去某个公司面试,技术主管比较年轻,问了如何看待重复造轮子的问题。我的答复是,我不鼓励重新造轮子。第一,很多人之所以重新造轮
子,是因为不知道有这样的轮子存在。第二,是因为对别人的轮子不熟悉,不愿意学,当然,也可能存在部分轮子质量不太高,学习成本很高。第三,很多轮子并不
是最适合目前项目的需要,通用的轮子对很多特定的项目而言可能功能过多,性能等方面都有影响。这里面,只有第三种才是有必要考虑重新造轮子的,但是,往往
得出第三种结论的时候,你其实已经先用了轮子,可以用数据证明轮子不太合适了。这个时候需要考虑的切换成本和重造轮子的收益。所以,作为项目管理者,在架
构设计的同时,把轮子选的相对合理一点,以此控制项目的代码量,这是控制项目成本的重中之重。选好外界通用的轮子,固化自身产品线自产自销的特定轮子,是
逐步降低项目成本,提升竞争力的重中之重。
3、在软件硬件更新换代频繁的年代,技术路径选择如何寻找平衡。对于大公司,因为切换的成本非常高,所以技术选择上相对保守。对于小公司,存在两种可能,
先锋类型的,非常激进,这样才能让时间成为这样小公司的朋友,一步领先,步步领先,在技术上获取越来越大的影响力。保守类型,采用最主流的开发技术,这样
在公司不稳定的情况下,可以以较低的成本让开发团队基本稳定。对于新老程序员,同样也有类似的选择,新程序员选择主流的开发技术,可以让自己在人才市场有
更多的选择,对于老程序员,选择较为先锋的技术,可以押宝未来的技术潮流,提升影响力。所以,最终的选择,是要平衡各方利益,相对成本较低的选择。比如在
小公司的我,已经体会到不用主流技术,新人容易流失的痛苦,同时也看到了小公司采用最新的技术,新人也流失的痛苦。所以,采用什么样的技术,和团队的人员
构成息息相关。在项目开发过程中,团队成员的稳定是至关重要的。所以,不能单凭技术喜好和眼前的成本做考虑,需要从长远考虑自己的团队需要如何发展,采用
什么样的技术可以确保团队沿着这样的路径前进。尤其对于希望做产品开发平台的团队而言,这点至关重要,当然,对于短期项目,这个问题相对而言就可以放松一
些。另外,对于大多数小公司而言,由于业务规模的原因,硬件上的总成本很小,利用率比较低,所以,架构上越是支持负载均衡等多服务器的设计,就可以越放心
的采用开发成本最低的新技术,这样可以通过利用硬件成本的可伸缩性降低软件开发成本。而不是相反,花太多的力气在软件性能提升上,浪费硬件的能力。所以,
小公司尽量不要谈性能如何如何高,真正需要重视的是架构上的可伸缩性。这点在架构上的要求相对高一点,但一旦走进了这条路,后面的问题会轻松很多。
游戏项目很有意思,目前技术方面我能体会的也就是上面的三点。希望今后在架构设计方面能够更进一步,也能做一点更细的总结。
分享到:
相关推荐
鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...
游戏卡在线销售系统是一个基于...项目可以根据不同游戏公司的需求进行二次开发定制,以满足不同游戏公司的在线销售需求。通过该系统,游戏公司可以提高销售效率,降低运营成本,为玩家提供更便捷、更安全的购买体验。
短期:AIGC 技术有助于提升游戏开发效率,降低开发成本和开发门槛。1) 协助完成开发中的基础性、重复性工作。游戏美术方面,利用 AI 生成基础美 术素材等,能够高效地完成模型贴图、素材拼接等工作;游戏程序方面,...
基于“微信小程序” + “云开发”实现的单词对战小程序,支持好友对战、随机匹配、...云开发有一定免费额度,恰小饭无其他服务器成本 ~ 不错的副业项目 学习小程序:代码封装性强,使用了微信小程序常用API,小程序云开
鉴于以上原因,软件项目开发过程中,在可以满足系统开发需要、能够适应系统发展、保证开发成本的条件下,应该尽量采用成熟技术。 3.慎重引入先进技术 在软件项目开发过程中,有时为了解决系统的特定问题,为了使所...
2利用短距离无线传输新技术,实现联机游戏 展望未来,android游戏开发在更多层面,更广思路上,更多游戏情结和规则上,利用w ifi技术和蓝牙,EDGE,实现玩家联机对战。蓝牙是一种新型,开放且低成本的短距离无 线...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
2利用短距离无线传输新技术,实现联机游戏 展望未来,android游戏开发在更多层面,更广思路上,更多游戏情结和规则上,利用w ifi技术和蓝牙,EDGE,实现玩家联机对战。蓝牙是一种新型,开放且低成本的短距离无 线...
Block3D是专为3D设计师打造的零代码Web3D开发工具,用于帮助用户实现可交互的3D网页。其中,拼图是实现交互的主要工具,它具有直观、易用、...这是一款免费软件,用户可以用于商业项目开发,作者不会收取任何授权费用。
OSMA项目的主要目标是减少开发这些严肃游戏的成本障碍。 为了实现这一目标,我们在游戏开发的三个Struts中寻找通用,可扩展和可重用的组件:游戏技术,游戏美术和游戏设计。 OSMA严肃的游戏引擎是该项目的核心。 该...
该产品通过基于视频的图像识别技术,快速准确的缩小搜寻范围,给出预估定位,大大缩减了摄像头视频搜索的人力成本,提高了搜索的成功率,节省了宝贵的救援时间,对保障易走失人群(儿童、老人)的人身安全和公共场所...
此外,Java拥有庞大的开发者社区和丰富的开源项目,为小程序开发提供强大的支持。Java的语法结构清晰易读,同时具有良好的可维护性和可扩展性,降低了小程序的维护成本。在小程序开发中,Java可以作为微信小程序、...
且在非功能方面达到了将系统解耦分层,易扩展、高可用的目的,框架的引入使得开发成本降低,重复的构建代码由框架自主完成,开发时只需专注业务逻辑的编写。分布式集群的引入使系统可以根据并发量的高低实时调整...
1A.1沼泽游戏 1A.2合作中的竞争 1A.3其他领域的合作博弈 1A.4软件工程的重建 1A.4.1这一词汇从哪里来 1A.4.2我们从哪里走错了 1A.4.3重建软件工程 1A.4.4技艺 1A.4.5合作博弈 1A.4.6精益制造 ...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...
这些项目基于JavaServer Pages(JSP)技术和MySQL数据库构建,旨在提供高效、可靠的管理和服务解决方案。 其中包括管理系统,如人力外包企业专用HR管理平台、图书管理系统、学生公寓管理系统和小区物业管理系统,...