2011年写的,回过头来看,那个时候的代码很是难看啊。 传送门
我们不能打一辈子星际,但可以做一辈子朋友。 我们不能打一辈子传奇,但可以做一辈子兄弟。
@chapgaga 加载速度不快,估计是因为文件本身很小,图片(png)和数据(js)都是ajax获取的。还有可能是304缓存的作用,加载一次,以后就快很多。
异步获取,如果没有实际获取,就不绘制。更好的办法或许是在没有获取到需要的数据的时候,用一些通用的图片代替绘制,否则就会出现透明人或怪。
这个代码已经没有什么价值了,数据组织上可能还有点参考价值。现在要重写的话,我可能会直接用cocos2d,毕竟webgl在效率上要比canvas好很多。图片长宽也会控制成2的次方。地图应该直接用渲染好成图,不再分层(原来按照传奇模式分为基层,草层,树层等),传奇那样处理是为了更好表现物体的遮挡效果,不分层的话,直接做区域透明来表现遮挡,效果肯定没有传奇那么精细,但是效率上要好很多,可以少绘制很多图层。魔法什么的也会用粒子系统来实现,传奇原来的魔法效果都是固定的图片,带宽比较浪费。
比较可惜的是没有跟后端通讯的实现,我现在正在写一个服务端,lua方面的,如果能够实现的话,说不定会补上。
@chapgaga 在我眼里lua比javascript更好一点,他们很类似,但是lua更适合将异步转同步。callback模式的异步是有很大的缺陷的,ES6,7很多新的语言特性都是为了缓解这个问题而增加的,而lua本身就提供了异步转同步的基础工具coroutine,所以我觉得lua更好一点。
当然语言本省没有好坏,只有适用与否。
@chapgaga lua比javascript语法相对简单点,但对c语言系列的还是需要适应的。
编辑器全部用vim。可读性没什么问题,懂javascript上手很快的。
@CarlosRen canvas本身包含2d和webgl对应的context,拿两者比较的确不妥。canvas元素我个人把它理解成动态图像的一个容器,具体是用2d还是3d实现就看个人取舍。可以比较的是不同context下提供的API,webgl提供的更加底层,效率和表现力上相对更加丰富些。用3d的接口实现2d效果是可以的,cocos2d就是用webgl实现了2d,在平台不支持的时候,退化成2dcanvas。