黄巾之乱-历次版本

2024-01-01 02:50
文章标签 版本 历次 黄巾之乱

本文主要是介绍黄巾之乱-历次版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

(这首页美工花了一周)

2006年网页游戏开始出现在玩家的眼前,我开始琢磨做一个类似于腾讯战神的WebGame网页游戏。因为战神太糟糕,只能在固定几块地上修房子。我想要的游戏世界是全开放的:全部游戏单位都可以在几乎无限大的地图中野蛮生长、移动,由玩家指挥去攻城略地。

最初是找伍先明看看怎么样,结果要我拿策划案,并承诺只要想得出,交给他就搞得出来.但是从零起步不可能有完整的策划案,所以那个时点,无论如何是拿不出策划案的。借助外力来实现就此做罢。 (伍先明大学同学,他姓伍,我姓刘,我们小组就叫了56EG)

开始设想的系统非常简单,构建一个web服务,提供完全基于文字的访问界面,只要内容好玩,应该会有用户的.然后开始做web相关的程序.原来有些asp的基础.但是不知道怎么选择了jsp,可能同工作中了解到sap和oracle都在推JAVA。 找了一本jsp和servlet的书,开始学起来. 然后找到孙卫琴JAVA基本教程看,这样查java函数比较方便。jsp用熟了后,还是使用JDBC连接数据库。

时间到了2007年6月,当时已经发现基于文字的界面太是糟糕,重点放在了如果改变界面上,并有一个很困惑的问题,地图是怎么设计的?

开始感觉应该有地图数据,于是找来三国世纪游戏里的地图,该地图是1600*1200大小.给100多个城市点上一个点,做了一个程序(老vc终于有点用了)按象素取点法,得到了城市的坐标.然后就一直想不通这些个地图数据要怎么设计到游戏中.服务器要怎么设计这么大一个阵列数组。

 

王懿(儿时一起玩QUAKE1的枪手,长大后的挚友)告诉了我hibernate,说这个得了什么什么奖,是java对象用的。于是找来一本hibernate的书看起来,又是孙卫琴的.后来发现孙卫琴的书也是翻译过来,不过开始学习概念是最好不过的了。三个月后,可以使用hibernate这个数据库的ORM了。

 

关于地图的设计,在设计游戏单位时有了新的想法:就象食神说的"其实根本就没有食神,或者人人都是食神"。其实根本就没有地图,或者人人都是地图。 位置坐标数据被放到游戏对象里,就是在对象表中多了放坐标point (X,Y)的数据字段。这样就不用专门搞个地图数据,场景就可以跑起来了。为了把web的动态界面做好,AJAX是一定要学习的,还好AJAX比较好学,核心就是新开一个连接向服务器要数据,然后整个页面局部刷新要修改的数据。

 

2008年3月,黄巾之乱第一版有了一个雏形。

第一版:2007-2009 JSP+AJAX+JS+SQLsrver2000。

每个对象,玩家都是可以操作的。

用ajax实现了一个沙盘地图,有21*21=421这么多块,使用的图片图标是20*20像素.

21*21=421个地点是一个area地区。

单位在同一地点上的数量没有限制,这是为了方便数据库以地点为条件取数据。

游戏对象数据在服务器端用了list对象组来实现对应。到放弃ajax的时候,我在黄巾之乱第一版中写了150个页面文件,

感觉也不算浪费吧,因为路总是一步一步走出来的.游戏业务逻辑内容也获得了一定的测试,游戏中涉及的对象如下:

 

人物建筑资源物资装备书籍技能
村民农田树林谷物头饰研究
枪兵伐木场石堆木材衣物招募
刀兵采石场铁矿石材长裤
弓兵铁矿场煤矿铁矿石鞋子
骑兵煤矿场兵器
粮草车猪圈猪肉首饰
英雄马圈马匹坐骑
酒窖酒水
炼铁房铁锭
民宅长枪
仓库长刀
市场长矛
城墙盾牌
弓箭

主体功能完成了一些后,我迫不及待的开放到了互联网上让用户注册和测试,游戏的设计比较独特,颇受玩家称赞,

同一时期所有的WEB游戏可操作对象的坐标都是固定的,就像在玩一个单机版,而我的黄巾之乱在尝试给玩家真正网络版的体验。建筑、人物和物品不少功能都或多或少的被玩家使用。

其中有个头号玩家,年纪同我相仿,三十多岁,他玩得很上隐,我想他基本和我一样是老玩家了。

在ajax这么糟糕的用户体验下,居然修了半个城,大概100多个建筑,花了不少时间,这让我大吃一惊。可惜当时的截图丢了。

 

随作游戏功能越来越多,数据库里的操作也多了,最初用的是mysql数据库,后来发现ms的sql2000好用,还有作业功能。然后就开始使用sql2000.写存储过程,邮标。邹建的sql2000管理拿来翻翻,网上文章下来看看,时间又过了好几个月。

 

时间很快到了2009年9月,我准备推出全新一版的黄巾之乱,首先使用ActionScript3,用flash换掉了糟糕的ajax。数据库的sql2005也换掉了2000,大量使用存储过程、游标、触发器同步。

当然游戏内容仍然还是原来构想的<龙之崛起>和<七个王国>的无限世界的策略类型。

 

 

 

第二版使用的技术:2009-2010   ActionScript3+SQLserver2005 。 

玩了QQ的七雄争霸,借鉴了一些东西,去掉原来实现不了的很多设计,并且地图功能也比较好的实现,策划如下: 

人口(全局数据)      劳动人口, 空闲人口

影响:

增加一个建筑, 会占用空闲人口->劳动人口

减少一个建筑,会减少劳动人口->空闲人口

空闲人口不足,无法新建建筑。

时间增加,空闲人口增加.  

物资(全局数据)  铜钱, 谷物, 菜, 盐, 木材, 铁矿石, 煤, 猪肉, 马匹, 酒水, 铁锭

影响:

时间增加,各种建筑增加对应的资源。

高级资源增加,低级资源减少。

军队(全局数据)  枪兵,刀兵,弓兵,骑兵

影响:

武将分配军队,军队减少。

军营建筑内,随时间的增加,物资减少,军队数量增加。

武将(单一对象) 坐标,生命,等级,技能,能力等属性。

影响:

茶馆建筑物中产生。用户点击新增在地图中。

对敌人建筑,武将,NPC产生影响。

武将需要指定仓库或车队做补给,否则影响能力。

武将包含军队种类和数量。

武将包含车队数量。

水源(单一对象)坐标。

影响:

农田必须建在水源旁边。

民宅(单一对象)坐标,生命。

影响:

民居必须建在农田旁边。

------------------------------------------

建筑地理位置限制关系:

水源->农田->民宅->炼铁房,粮仓,市场,武器铺,军营.

资源->采集场.

 按目前这种设计,地图上移动的单位就只有武将和NPC......

 

 

 

虽然架构上,采用最简化的方式去掉了第三层,但黄巾之乱第二版的开发还是失败了。

二版开发失败总结: 

1. 重复工作量太恐怖,压跨了项目。

改动源于数据库表,对象的属性调整对应数据库的表字段调整,工作量一。

PO文件被MyEclipse产生自动释放到web的po目录,需要编译成class类文件,工作量二。

用editplus写JSP文件做相应的调整,工作量三。

用as3写SWF内部调整,工作量四。

数据库表改动后,需要对sql2005中的触发器或存储过程调整,工作量五。

全部要协调一致,工作量六。

上述改动一直频繁地伴随做前期开发,每走一小步,所有工作都会重做

 

2.策划不完整,导致程序写一点,看一点,改一点:

一直拿不出一个完整的策划案,导致不停的增加内容而一遍又一遍重复修改,但要一次拿出完整程序设计确是比较困难的,而且中途为游戏性增加不少内容让工作量雪上加霜。策划案应该可以整体拿出,并简化功能。程序设计根据策划模拟后再编写,减少工作量。

3. 按现有开发工具和模式,实现比较困难,选择放弃开发。

 

 

第三版

2015 C# C/S版本的尝试

2015年开始学习使用C#,最初只是感觉函数功能比MFC强太多,语法很优雅(一行代码可以干很多事情),后来发现整套环境可以使用的三方组件也非常丰富和强大,比如网络部分可以使用HP-SOCKET轻松搞定,UI可以使用去FineUI,ORM用MS的EF更是爽到爆,移动端也可以用Unity 2D跨平台。

 

今天已经是2019年了,回顾过去这个历经10年的小项目终究是没有实现 。原因很多,我想最主要的是因为自己一个人的力量很有限,不过正是因为这些技术铺垫,才让我一直追逐作技术,最终用C#在近几年的企业软件开发中如此的高产。

 

再见,我的黄巾之乱!

 

 

 

 

黄巾之乱最简设计

 



 

这篇关于黄巾之乱-历次版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/557972

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare