真人拳皇项目Alpha阶段的回顾——史经浩

经过一个多月艰辛的努力,我们小组终于在1/14按时发布了真人拳皇的alpha版。按照计划,这一周是总结过去这段时间的经验教训,为即将到来的beta阶段作准备。回顾刚刚过去的一个多月,从plan阶段的天马行空,到后来的逐渐降级,然后分两步走的计划,我们走过了整个alpha开发的全过程,初步体验了正规软件开发。这当中,我们都收获了很多,有好的经验,也有不好的教训,经过今天软件工程课上组员的讨论,总结出了其中比较重要的几点。先说说教训吧。

  • 计划阶段要务实
    我们刚开始构想这个游戏时,完全是天马行空的想象,比如自动提取用户图片中的肢体部位,将它们重新组合成各种人物模型,再比如何种奇怪的招式、特效,游戏做好之后可以怎样恶搞等等。在第一个星期的plan阶段,大家都在津津乐道这些,并没有真正考虑其实现问题,在技术上可不可行,用户到底有怎样的需求,在两个月的时间里能不能做出来等实际问题。等到进入了coding阶段,才发现光要实现两个人对打这个基本功能就很不简单,需要自己从头开始写一个小的游戏引擎。做了一段时间,发现工作量还是蛮大的,于是就把原来设想的提取用户的全身图片改为只提取用户的头像,并且放到beta阶段来实现,实际上和我们之前的预期相比已经大打折扣。这个教训告诉我们,在确定下来做什么之后,一定要尽快的接触技术细节,考虑其实现难度,适当的取舍,不能只停留在头脑风暴阶段。否则很有可能到实现阶段发现技术上不可行,再回头补plan的功课,延误了进度。
  • 重要任务要分摊
    我们的dev有三个,说起来也不少,但是回头看看所写的代码,保守估计有2/3以上是一个dev写的,这样做给项目管理带来很大困扰。一方面,干活多的dev抱怨,大部分活都是我干的,压力很大;另一方面,另外两个dev也很委屈,没什么活要干,只是读懂别人代码。这样也给项目带来了不小的风险,因为重要的代码都是一个dev写,等于把鸡蛋都放在一个篮子里,如果哪天这个dev组里比较忙,或者其它原因,不能coding,整个项目的进度就会因此而被延误,其他人也只能干着急。所以说,模块化编程非常重要,coding能力比较强的dev,可以做dev master,统筹整个的coding工作,合理的把程序划分成各个模块然后分配下去,让每个dev都积极地参加进来,摆脱一人写代码,其他人读代码的现象。
  • 组员沟通要及时
    这个主要还是从一次事故中得出的教训。一次,某dev被要求描述人物招式动作的转换状态,当时对我们期望怎样的输出说的不是很清楚,于是这位dev就按照自己的理解用文字描述了转换状态,第二天Scrum时交给大家看,但是大家实际上期望的更为清楚的状态转换图描述,而不是文字的描述。虽然完成文字描述对画出状态转换图有很大的帮助,但毕竟有点南辕北辙。如果这个dev当时能够及时对不清楚的地方弄清楚,也不会发生这样的事情。组员之间的沟通不仅限于每天的scrum,有什么不清楚的地方,一定要及时的沟通,不然自己很有可能out of track,浪费了精力,更极大地挫伤了积极性。

当然,教训很多,这里就不一而足了。另一方面,能够按时发布alpha版并基本实现预期功能,我们还是有些心得的。

  • 分解目标——雪中送炭与锦上添花
    俗话说,一口吃不成大胖子。当我们在coding阶段意识到做这个游戏并不像我们想象的那么简单时,我们及时调整了策略,分析了什么事重要而基本的功能(雪中送炭),什么是可选的、不那么核心的功能(锦上添花),然后集中精力在alpah阶段实现核心的、基本的功能。我们能够按时的发布alpha版,实现基本的两人对打功能,很大程度上得益于目标的合理分解。试想,如果我们当时既想做两人对打,又要实现酷炫的特效、用户自定义等等,恐怕我们到现在什么也做不成,很难有可以deliver的东西出来。
  • 明确分工
    典型的一个软件项目团队有PM,dev和test三个角色,我们刚开始也是这样设置的。但是后来发现,因为我们是做游戏,需要很多的设计工作,比如人物的招式、照片的拍摄与处理等工作,很难归于上述三种角色的职能。于是我们又设立了两名designer,来进行设计工作。这样分工更加明确,也容易提高效率。

转载于:https://www.cnblogs.com/MSRA_SE_TEAM/archive/2011/01/17/1937765.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在栈中压入一个字符串c语言,面试题 31:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,…

谈谈对IOC及DI的理解与思考

一、前言在实际的开发过程中,我们经常会遇到这样的情况,在进行调试分析问题的时候,经常需要记录日志信息,这时可以采用输出到控制台。因此,我们通常会定义一个日志类,来实现输出日志。定义一个生成验证的逻…

关于perl和shell的参数传递

Perl 1.命令行参数传递 *Perl **ARGV $_ARGV[0] $#ARGV为参数的个数-1 ($#array 只适用于array不适用%hash) *Shell $1 $2 参数个数$#(不用减1,是否可以用来判断是否有命令行参数?) 2.函数参数传递 *Perl **_ 传递了所有的函数参数。如果是对象中的方法。$_[0] 是…

NET问答:如何理解 IEnumerableT 和 IQueryableT

咨询区 stackoverflowuser&#xff1a;请问类型 IQueryable<T> 和 IEnumerable<T> 有什么异同&#xff1f;我应该使用哪一个而不是另一个&#xff0c;代码如下&#xff1a;IQueryable<Customer> custs from c in db.Customers where c.City "<Cit…

c语言实现字母转化为unicode码,用C语言实现中文到unicode码的转换

由于本人喜欢用Notepad编辑器&#xff0c;该编辑器的好处是小巧灵活&#xff0c;但是有几个地方做的不足&#xff0c;但是我都能够很好的采取相应的措施来替代&#xff0c;下面让我们看看Notepad有哪些地方的不足&#xff0c;进而采取怎样的措施。一&#xff1a;Notepad不能编译…

终于有人把云计算、大数据和人工智能讲明白了!

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢&#xff1f;因为这三个东西现在非常火&#xff0c;并且它们之间好像互相有关系&#xff1a;一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成…

c语言程序设计新编教程答案钱雪忠,新编C语言程序设计教程

图书简介配套资源&#xff1a;电子课件、习题解答、源代码本书特色&#xff1a;★精选例题&#xff0c;引入了大量趣味性、游戏性应用实例&#xff0c;注重与加强程序阅读、参考、编写和上机调试实践的能力&#xff0c;重在编程思路的培养与训练。★概念清晰但不烦琐&#xff1…

***指定网站

1.***指定网站&#xff1b;查找SQL注入点&#xff1b;碰到网站地址是以asp&#xff1f;44.php&#xff1f;44.等结尾的动态网页注入大家自己在论坛搜索资料。关键词SQL。 这里讲些小经验&#xff0c;有的网页如http://www.***.com/article/today/265501.html大家知道以HTML结尾…

聊一聊如何在.NET Core中使用Nacos 2.0

前言 随着 nacos 2.0.0 正式发布&#xff0c;老黄这边也跟着发布了 1.0.2 版本的 nacos-sdk-csharp。下面简单聊一下相关的使用。纯 SDK 的使用 首先要安装 nuget 包<PackageReference Include"nacos-sdk-csharp" Version"1.0.2" />这里有一点要注意…

c语言格式字符If,C语言所有语句格式 C语言中的的if语句共有多少种格式?

导航&#xff1a;网站首页 >C语言所有语句格式 C语言中的的if语句共有多少种格式&#xff1f;C语言所有语句格式 C语言中的的if语句共有多少种格式&#xff1f;相关问题:匿名网友:1.if语句&#xff1a;if(Bool表达式)&#xff5b;如果表达式为true,执行此表达式&#xff5d;…

听说你刚转了Java?准备转回.NET吧!

牛年跳槽季如火如荼&#xff0c;敏锐点的小伙伴儿应该都留意到了&#xff0c;BAT新年都在招聘.NET。2020年11月份发布.NET5统一了七大应用方向&#xff0c;.NET6的2个预览版已经把Blazor升级、跨平台UI方案MAUI、CLR性能优化等都放出来了&#xff0c;.NET前景充满想象&#xff…

poj2253

dijkstra 把存最短距离的数组改为存储frog distance即可 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace std;const int maxn 201, inf 1000000000;struct point {int x, y;…

一个人开始废掉的3种迹象

1作家李尚龙说&#xff1a;“在大城市里&#xff0c;搞废一个人的方式特别简单。给你一个安静狭小的空间&#xff0c;给你一根网线&#xff0c;最好再加一个外卖电话。好了&#xff0c;你开始废了。”之前的我并不相信人会这么轻易地堕落&#xff0c;直到身边出现了一个真实的例…

WPF 动态更换图片路径

wpf中动态修改图片路径&#xff0c;其实很简单&#xff0c;有个小伙伴有疑问&#xff0c;绑定了source,为什么不能显示图片呢。。。通过绑定&#xff0c;修改图片路径&#xff0c;动态显示图片&#xff0c;效果如下&#xff1a;图片支持本地路径和网络路径&#xff0c;下面就来…

信管专业c语言考什么,计算机信息管理专业卫生事业单位招聘考试笔试模拟题(十)...

关于计算机信息管理专业卫生事业单位招聘考试笔试模拟题&#xff0c;相信很多人都想知道&#xff0c;医学教育网经过搜集整理&#xff0c;特别整理以下内容&#xff0c;希望对您有帮助&#xff01;1、题干&#xff1a;广域网一般采用网状拓扑构型&#xff0c;该构型的系统可靠性…

poj2996

本题是简单的模拟&#xff0c;使用双层vector嵌套存储棋子的位置和种类&#xff0c;然后分别对每个vector进行排序 注意&#xff1a;排序方法为sort(piece[i].begin(), piece[i].end(), cmpWhite); 当然&#xff0c;cmpWhite是比较函数&#xff0c;可以不加比较函数&#xff0c…

听说你在学习算法?清华教授为你准备了一份独家秘籍!

也许您渴望进入国内外IT名企&#xff0c;却屡屡在算法类面试中折戟&#xff0c;苦恼不知如何破解困境&#xff1b;也许您是一位IT工程师&#xff0c;却因为算法能力不足而错过无数次的升职加薪&#xff0c;困扰不知如何突破瓶颈&#xff1b;也许您是一位大学生/中学生&#xff…

一文说通Dotnet操作MongoDB GridFS

补个技术债。这个主题一直在列表中&#xff0c;今天把它补上。还有一个原因&#xff0c;就是网上能查到的代码&#xff0c;大多已经过期了。今天写的&#xff0c;是按最新的SDK做的例子。一、MongoDB GridFS先说说 GridFS。MongoDB 是用 Bson 来存储数据的&#xff0c;每一行数…

linux path减少,Linux的环境变量PATH中所带来的问题及解决方法

Linux的环境变量PATH中所带来的问题及解决方法发布时间:2006-01-07 10:08:27来源:红联作者:yo本文主要讲述“.”在LINUX的环境变量PATH中所带来的问题&#xff0c;及解决的几种方法。正如很多人所知道的$PATH环境变量里存着一张目录列表&#xff0c;当用户要执行某一程序时&…

用VirtualWifi软件实现无线网卡同时连接多个AP。

2019独角兽企业重金招聘Python工程师标准>>> 用VirtualWifi软件实现无线网卡同时连接多个AP。 随着信息技术的发展&#xff0c;越来越多的人开始使用便捷的无线路由器&#xff08;AP&#xff09;组建家庭局域网。当你发现你周围有多个AP可以连接的时候&#xff0c;是…