2016年6月30日 星期四

02362422 卓景昭 小朋友下楼梯_视讯互动版


02362422 卓景昭

我做的专案是让视讯镜头成为一个控制器,以实现游戏的目的。

专案构思:
在一开始的时候,我的想法是在BCB中直接建构一个游戏,来完成这门课的专案。但是在期末动起手后,我打消了这个念头。原因有二:一是太过于复杂,时间来不及,无法做出第一版来展示。二是美工差,不管从游戏画面,还是体验,都无法让人满意。在参考了历届学长姐的优秀作品后,我决定从控制器着手,制作游戏控制器。

这个专案最关键的技术在于能让摄影机辨识用户在镜头中的位置,以进一步实现虚拟键盘的功能。由于时间紧,我只制作了阳春版,只有左右两个键,通过触碰图中两张图的位置来实现。由于摄影机硬体的限制,目前用手在镜头前玩时用户体验会比较好,若用户在镜头远处,全身入镜玩,反应较慢,所以本次demo就用比较的简单的方法来进行。

在几天的制作中,遇见的困难很多。从简单的缺少宣告,到无法进行background,重新制作专案,我都有遇到过。其中,最让我印象深刻的是添加不同的图片到视讯窗口。这是我这个专案的转折点。之前在尝试放入图片到视讯窗口时,参考老师的程式码范例,是没有问题的。但要放自己的图片时,却出现scan line index out of range。询问了很多同学,都不清楚这个问题出在哪里,后来我通过自己查资料,查到了在进行ScanLine[j],如果j大于图片的大小,阵列读取图片时会发生错误,无法从图片读取到像素点,就会发生scan line index out of range.
       
程式主界面

制作了Auto按钮 方便执行

8*8block监测模式

ColorMode
BianryMode

游戏影片:





  在制作虚拟按钮时,因为没有注意到keybd_event在按下后需要release,导致了程式一执行,按钮就会不停的按下,即使没有达到触发条件。后来经过同学的指导,才明白问题出在哪里。


由于时间紧迫,我在排版和选图设定上没有做得很好。导致左右键的位置有点近。在游玩的时候,常常会因为身体碰到,而导致误操作。若有机会制作第二版,这将会是主要的改进方向。


制作心得

当时选这门课是因为觉得这门课好玩,经过了一学期的学习,的确如我所期待,课程很有趣,期末的专案也很有挑战性。因为期末其他事情耽搁了一些时间,导致这个专案只有一周的时间来构思+制作。专案的程式码大部分来自于老师,经过后续不断的修改,达到了预期的效果。游戏方面我选用了经典的小朋友下楼梯,因为它通过左右键控制,就可以达到不错的游戏体验。在后续实作部分,有个小插曲:我的专案制作完成后,虽然在记事本中测试按键有效,但在游戏中却无法通过控制器控制,我查阅了相关资料,没有发现问题所在,后来和同学讨论,明白了在按键Event之间需要加入Delay(在按下和放开之间),否则程式无法侦测到我的操作。通过这次专案,我的程式能力相较之前有所提高,虽然程式码大部分来自于老师,但是使用和修改程式码需要对程式码有一定的理解,否则是无法进行修改的。相应提高的还有逻辑思考能力,专案中callbackfunction非常多,表面上看起来执行顺序很跳跃,但在理解程式码后,就明白了程式的执行顺序,在弄明白这些后,增添新功能也就变得不那么困难了。

沒有留言: