设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 天外来客
打印 上一主题 下一主题

即时战略游戏建造系统

 关闭 [复制链接]

Lv1.梦旅人

青天

梦石
0
星屑
86
在线时间
232 小时
注册时间
2007-12-15
帖子
2091

开拓者

11
发表于 2008-8-31 14:35:18 | 只看该作者

我汗,图片都米有一张额。那啥,在下载来试试看中,希望效果能如想像中的一样额。{/jy}
开坑准备中
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
12
发表于 2008-9-28 19:59:59 | 只看该作者
这个雏形只满足很小的视觉效果而已.......

一些重要的内容都没考虑。

首先就是自由度,想要自由,想建哪就建哪必须要把地图铺满事件

第二是功能,建筑不是建着玩的,功能方面如何设置呢?,独立开关是不错的选择,不过那个工作量想想就可怕....

第三是效果,还没见过有即时战略游戏的建筑是一下就建成的- -....

第四是占地面积,行走图无论多大,它的占地面积只有一格

这个是关于这个“雏形”就拥有的几个缺点而且,想解决雏形的这些缺点可不容易,

所以,楼主的这个想法不可取。

其实,比较好的做法是利用像跟随系统那样的活动精灵生成。

解决这些问题是不会非常难的,不过不是使用事件,不然肯定烦死,必然要用脚本重订“房子”,就是设定多种建筑物的“脚本类”,这个才可能做得了,而基本上地图表现就是这样做的。也不是所有的游戏都用得上这种系统。。。用的上的游戏肯定强悍非常,内容还会难吗?这个建筑系统只是做出了表象部分,内在的要自己慢慢做才能合乎要求,这个东西虽然用处不大,可是为了楼主的创新精神,我精神上支持一下。。。。。。。。创新比技术更重要啊。。。。。。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-11
帖子
10
13
发表于 2008-9-29 00:06:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
14
发表于 2008-9-29 03:56:21 | 只看该作者
我也正在研究RTS....

越往后面写越晕 @_@

好多东西要考虑....

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

刚看了下,有点失望....
建造不能固定的,要根据玩家的决定的位置来确定

第三是效果,还没见过有即时战略游戏的建筑是一下就建成的- -....


没素材,没办法,我做的是用阿尔西斯当机枪兵 = =bbb
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

15
发表于 2008-9-29 04:16:09 | 只看该作者
我感觉最好的建造方法就是暴风便利店的建造方法(被PIA)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-5-2
帖子
140
16
发表于 2008-9-29 04:20:18 | 只看该作者
以下引用精灵使者于2008-9-28 20:16:09的发言:

我感觉最好的建造方法就是暴风便利店的建造方法(被PIA)


MS这个也不能根据玩家的决定的位置来确定
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
17
发表于 2008-9-29 04:30:41 | 只看该作者
  1. #=============================================================================
  2. #定义城市内容的类,在游戏中可以调用,作为游戏中的城市载体而存在。。。实质上一个
  3. #城市的模板,全原创的定义,基本都是自己写脚本。因为rm本身是没有城市这个概念的。
  4. #                                                 ------- by:lhbadsl
  5. #=============================================================================
  6. class Lhbadsl_City_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 定义实例变量
  9.   # 城市的主要参数是:金,民心,人口和可征兵数。
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :name                # 城市名
  12.   attr_accessor :level_original      # 城市初始等级
  13.   attr_accessor :level_max           # 城市最高等级
  14.   attr_accessor :level_plus          # 城市等级修正
  15.   attr_accessor :space               # 城市空地数目
  16.   attr_accessor :gold_original       # 城市初始金
  17.   attr_accessor :gold_plus           # 城市金修正量
  18.   attr_accessor :tax                 # 城市税率
  19.   attr_accessor :people_original     # 城市初始人口
  20.   attr_accessor :people_plus         # 城市人口修正量
  21.   attr_accessor :burn_rate           # 城市人口生育率
  22.   attr_accessor :house_list_original # 城市可新建屋子列表
  23.   attr_accessor :house_list          # 城市已建成屋子列表
  24.   attr_accessor :leader              # 城主
  25.   attr_accessor :belong              # 城市阵营
  26.   attr_accessor :occupy_time         # 城市被占领时间
  27.   attr_accessor :draft_rate          # 可征兵占人口的比例
  28.   attr_accessor :draft_plus          # 可征兵修正量
  29.   attr_accessor :morale_original     # 城市初始民心
  30.   attr_accessor :morale_plus         # 城市民心修正量
  31.   attr_accessor :morale_max          # 民心极限
  32.   attr_accessor :guard_original      # 守城防御加成(城防初始值)
  33.   attr_accessor :guard_plus          # 城防修正量
  34.   attr_accessor :guard_max           # 城防最大值
  35.   #--------------------------------------------------------------------------
  36.   # ● 初始化对像
  37.   # 首先这个base_city只是城市的一个模型,所以它的所有初始参数都是空的,要在后
  38.   # 面详细定义其参数后才可以叫做城市,而每个城市的参数都是不同的。。。其他的
  39.   # 四大属性之类的表象,都是使用函数来表达的。。。。。。。。
  40.   #--------------------------------------------------------------------------
  41.   def initialize
  42.     @name = ""
  43.     @level_original = 0
  44.     @level_max = 0
  45.     @level_plus = 0
  46.     @space = 0
  47.     @gold_original = 0
  48.     @gold_plus = 0
  49.     @tax = 0
  50.     @people_original = 0
  51.     @people_plus = 0
  52.     @burn_rate = 0
  53.     #------------------------------------------------------------------------
  54.     #可新建屋子在这里是可以自定义的,其中-1代表空房子,0~9代表不同的屋子,还
  55.     #没有在这里完整的定义。
  56.     #------------------------------------------------------------------------
  57.     @house_list_original = []
  58.     @house_list = []
  59.     @leader = ""
  60.     #-----------------------------------------------------
  61.     #城市的阵营,0代表魏,1代表蜀,2代表吴,-1代表空白都市
  62.     #-----------------------------------------------------
  63.     @belong = -1
  64.     @occupy_time = 0
  65.     @draft_rate = 0
  66.     @draft_plus = 0
  67.     @draft = 0
  68.     @morale_original = 0
  69.     @morale_plus = 0
  70.     @morale = 0
  71.     @morale_max = 0
  72.     @guard_original = 0
  73.     @guard_plus = 0
  74.     @guard = 0
  75.     @guard_max = 0
  76.   end
  77.   end
  78. #=============================================================================
  79. #城市基本数据库类,这里定义了所有城市的原始数据,要和前面的城市模板类结合定义
  80. #再导入到城市群类中,就可以建立起庞大的城市群了。。。因为rm默认数据库里是没有
  81. #城市这个概念的,所以它的所有原始数据都必须用脚本数据库来定义,设定比较复杂。
  82. #定义使用的数据结构是数组。下面是它的基本结构:
  83. #基本结构:[1,名字;2,等级;3,最高等级;4,空地数目;5,初始金;
  84. #7,税率;8,初始人口;10,生育率;16,征兵率;18,初始民心;
  85. #20,民心最大值;21,初始城防;
  86. #23,最大城防]
  87. #                                                   ------------ by:lhbadsl
  88. #=============================================================================
  89. class Lhbadsl_City_Date
  90.   attr_accessor :index
  91.   attr_accessor :city_array
  92.   def initialize(index)
  93.     @index = index
  94.     @city_array = date(@index)
  95.     return @city_array
  96.   end
  97.   def date(index)
  98.     case index
  99.     when 0
  100.       return ["徐州",0,3,4,100,0.1,20000,0.1,[1,2,3],0.1,60,100,500,2000]
  101.     end
  102.   end
  103. end
  104. #=============================================================================
  105. #城市数据处理的类别,主要是用来建立起单个的城市,本质就是把上面两个类数据合并
  106. #而特地定义的一个混合函数。。。本类主要在Lhbadsl_City_Group类的内部使用。。。
  107. #                                                   ------------ by:lhbadsl
  108. #=============================================================================
  109. class Lhbadsl_City_Single < Lhbadsl_City_Base
  110.   def initialize(index)
  111.     super()
  112.     @index = index
  113.     city = Lhbadsl_City_Date.new(@index).city_array
  114.     @name = city[0]
  115.     @level_original = city[1]
  116.     @level_max = city[2]
  117.     @level_plus = 0
  118.     @space = city[3]
  119.     @gold_original = city[4]
  120.     @gold_plus = 0
  121.     @tax = city[5]
  122.     @people_original = city[6]
  123.     @people_plus = 0
  124.     @burn_rate = city[7]
  125.     @house_list_original = city[8]
  126.     @house_list = []
  127.     @leader = ""
  128.     @belong = -1
  129.     @occupy_time = 0
  130.     @draft_rate = city[9]
  131.     @draft_plus = 0
  132.     @morale_original = city[10]
  133.     @morale_plus = 0
  134.     @morale_max = city[11]
  135.     @guard_original = city[12]
  136.     @guard_plus = 0
  137.     @guard_max = city[13]
  138.   end
  139. end
  140. #=============================================================================
  141. #城市群类,这个类是按照City_Base的定义和城市数据库类的原始定义而自行建立的,在
  142. #游戏事件中,随时可以引用的城市表象类。。一切对城市的操作都要引用这个类。。实
  143. #例在scene_title类中定义,是为了所有的地方都可以引用,并且这个类的处理实在存档
  144. #之后和读档之前的,可以使到城市类能够储存在save中。。。。。
  145. #                                                   ------------ by:lhbadsl
  146. #=============================================================================
  147. class Lhbadsl_City_Group
  148.   attr_accessor :max_index   #这个是实际上脚本城市数据库的最大项目数
  149.   attr_accessor :temp_array
  150.   attr_accessor :citys
  151.   attr_accessor :gold
  152.   def initialize
  153.     @max_index = 1
  154.     for i in 0...@max_index
  155.       @citys = []
  156.       city_single = Lhbadsl_City_Single.new(i)
  157.       @gold = city_single.gold_original
  158.       @people = city_single.people_original
  159.       #-------------------0------------------------1-----------------------2----------------------3----------------------4-----------------5-------------------------6---------------------7---------------8---------------------------9----------------------10--------------------11------------------------------12---------------------13-----------------14-----------------15-----------------------16---------------------17---------------------18--------------------------19----------------------20---------------------21-------------------------22---------------------23-----------24-----25--
  160.       @temp_array = [city_single.name,city_single.level_original,city_single.level_max,city_single.level_plus,city_single.space,city_single.gold_original,city_single.gold_plus,city_single.tax,city_single.people_original,city_single.people_plus,city_single.burn_rate,city_single.house_list_original,city_single.house_list,city_single.leader,city_single.belong,city_single.occupy_time,city_single.draft_rate,city_single.draft_plus,city_single.morale_original,city_single.morale_plus,city_single.morale_max,city_single.guard_original,city_single.guard_plus,city_single.guard_max,@gold,@people]
  161.       @citys.push(@temp_array)
  162.     end
  163.   end
  164.   #-----------------------------------------
  165.   #破城。。。。。。。
  166.   #-----------------------------------------
  167.   def breakcity(index)
  168.     @citys[index][15] = 0
  169.     @citys[index][24] = @citys[index][5]
  170.     @citys[index][25] = @citys[index][8]
  171.   end
  172.   #-----------------------------------------
  173.   #占领城市
  174.   #-----------------------------------------
  175.   def occupy(index)
  176.     @citys[index][15] = $game_party.steps.to_i
  177.   end
  178.   #-----------------------------------------
  179.   #获得现在金。。。。。
  180.   #-----------------------------------------
  181.   def gold(index)
  182.     if @citys[index][15] != 0
  183.      g = @citys[index][24] + ($game_party.steps.to_i - @citys[index][15]) * @citys[index][7] * @citys[index][25]/1000
  184.      @citys[index][24] = g
  185.     end
  186.   end
  187.   #-----------------------------------------
  188.   #获得现在人口
  189.   #-----------------------------------------
  190.   def people(index)
  191.     if @citys[index][15] != 0
  192.      p = @citys[index][25] + ($game_party.steps.to_i - @citys[index][15]) * @citys[index][10]
  193.      @citys[index][25] = p
  194.      end
  195.    end
  196.    
  197.   #---------------------------------------------------------------------------
  198.   #用于更新数据而已。。。。
  199.   #---------------------------------------------------------------------------
  200.   def update
  201.     for i in 0...@max_index
  202.       self.people(i)
  203.       self.gold(i)
  204.       if @citys[i][15] != 0
  205.       @citys[i][15] = $game_party.steps.to_i
  206.       end
  207.     end
  208.   end
  209. end
复制代码

其实这样就可以定义一个房子的“内在”类别了。。。。。。。。。。不过要用事件来配合,楼主这个正是和我的表象方法想到了一块。。。。真是同感同感。。。。。。给点技术上的支持给你,参考下。。。。虽然不是同样一种东西,可是脚本大概是这样做的。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

18
发表于 2008-9-29 04:30:50 | 只看该作者
恩恩……真的即时制游戏现在灵活度还很差呢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-5-2
帖子
140
19
发表于 2008-9-29 04:35:50 | 只看该作者
其实建造并不难,最难的是寻路算法和敌人AI,尤其是敌人AI,太难了

还有素材很难找
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

20
发表于 2008-9-29 05:28:26 | 只看该作者
其实用“我要造房子V2 ”一下就好了嘛。。。
不过V2 是VX的,差别是V2有创造事件的神力
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-7-1 21:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表