三国志11吧 关注:324,970贴子:11,234,476

回复:【无聊常更新贴】自制三国游戏的流程

取消只看楼主收藏回复

第一种,直接绘制整张地图,就像三国志11,他的地形相貌是无法更改的。相同的还有【信长之野望】的【革新】【天道】,都是不能更改的一次性绘制完成的地形…………
第二种,运用的比较广泛,是拼接地形。比如说【魔兽争霸III】,三国志9,【星际争霸】,【文明】系列等等……这样地图不是单一的,可以更改……所以使用拼接地形的游戏都有个特点,就是一般都提供地图编辑器~~~~~


123楼2011-11-26 11:13
回复
    直接绘制更容易表现不同地域地形的特征
    而用拼接地形,则是把地形【量化】然后一个个格子连起来,不如直接绘制的美观,但是可扩展空间很大…………
    (如果三国志11的地形是拼接的,估计早就有人做出地形编辑器了,好多MOD地图也就出现了,像【曹操传】)


    124楼2011-11-26 11:15
    回复
      2026-08-13 03:03:08
      广告
      不感兴趣
      开通SVIP免广告
      ……我做这个三国游戏,使用的是直接绘制地形……
      说是直接绘制,但是要怎么做呢?这也要把地形【模型化】
      ……普遍模型化地形的方法是,把地形看做一个矩阵,有着横列数列许多点,每一个点都有一个高度,最后全部连接起来……形成地形
      如图所示,这就是所谓的网格地形:

      


      125楼2011-11-26 11:18
      回复
        看成一个矩阵……矩阵上有许多点,每个点都有不同的值…………听着是不是很像【像素图】?
        对,我们就是通过用一张像素图的方法,把每个点的高度读入游戏。
        这种图有个专门的名称,叫做【地形灰度图】~~~~~~


        126楼2011-11-26 11:19
        回复

          这就是一张地形灰度图。这里普及一下颜色方面的知识,所有介于 白色 和 黑色 之间的灰色,他们的R、G、B值都是相同的,有种图片格式专门储存灰度图(.raw),不过用.bmp也能实现,因为既然三个值大小一样,那么随便读取其中之一就好了。
          如上……灰色偏白的话,值就大,白色值最大(255,255,255);相反就是偏黑色就小,黑色最小(0,0,0)…………
          这样就用一张图片向游戏说明了需要的地形的形状


          127楼2011-11-26 11:22
          回复
            发几张截图……在游戏中实现了地形的绘制:



            128楼2011-11-26 11:24
            回复
              很难看对吧……因为白乎乎一片,根本分辨不出哪儿高,哪儿低,这就是……没有光照的结果……光照和阴影【简称光阴】,不仅仅是看着像真实,也能让人分辨好多东西~~~
              上一张添加了光照之后的截图

              


              129楼2011-11-26 11:26
              回复
                恩……起码我觉得顺眼多了…………
                光照并不是说添加就会添加上的,这需要每个顶点增加一个矢量叫做【法线】
                ……因为电脑是不能知道什么是光照的,所以所有的光照都是用数学模型模拟的……
                模拟也只是简单模拟,现实中光照的复杂,是不能完全模拟出来的,起码现在的机器还没有这样的能力…………
                数学很难……就不讲数学了,知道图形学中,【法线】和光照有关就行了


                131楼2011-11-26 11:29
                回复
                  2026-08-13 02:57:08
                  广告
                  不感兴趣
                  开通SVIP免广告
                  ……继续说地形上的光照……
                  地形上的光照也大致分两种方式表现……
                  一种就是前面刚刚说的,用发现计算(就是截图所用的方式)
                  另一种就是用贴图,在贴图上标出明暗和阴影,然后把贴图赋予地形……也能展示出截图所示的效果…………


                  132楼2011-11-26 11:31
                  回复
                    好吧……再次中断,什么时候我写好了地形多重纹理混合贴图……什么时候继续更新………………也就是一两天吧~~~~谢谢支持


                    133楼2011-11-26 11:32
                    回复
                      唔……现在说一下显示字体的事儿……
                      刚才发个了帖子被54了,应该吧,这么麻烦还要依赖别人~~~~
                      ……其实我想要做的就是把字模读入内存……
                      前面介绍了,显示文字可以在开始把字模读入内存,或者用的时候读入再释放,两种方法的利弊已经说过了……我选的是用之前读入字模


                      134楼2011-11-27 13:53
                      回复
                        就算是开始的时候读入,也有三种方法~~~也是各有利弊
                        第一种,手工写代码读入……利在于可以节省内存,只读入需要的,弊也很大,一在于不能一口气知道自己用哪儿字儿,二就是……费人力啊


                        135楼2011-11-27 13:55
                        回复
                          第三种
                          我比较倾向的
                          要绘制字符的时候,先找一下内存中有没有这个字模,有直接调用,没有再载入
                          ……这个利就是内存里面的字保持在自己能使用到的范围,而且不用再写任何代码读入了
                          ……弊,就是如果突然要输入一大堆内存没有的字儿,会让游戏在一瞬间卡一下…………
                          不过这个可以忽略,游戏运行的时间长了,也就不会卡了,因为几乎所有的字都出现过了…………
                          我就选这第三种方法了


                          137楼2011-11-27 14:00
                          回复
                            谢谢支持……
                            这次先写这么几句吧,以后再继续更新~~~~~


                            139楼2011-11-27 14:02
                            回复
                              2026-08-13 02:51:08
                              广告
                              不感兴趣
                              开通SVIP免广告
                              把文字显示做完了……恩,还是比较满意的
                              使用了上面所述的第三种方法,中间遇到了障碍
                              ……就是忘记了汉字占两个字节,所以输出的时候总是多了应该输出字符一倍的乱码……原来将字符串长度除于2就解决了~~~~~~


                              141楼2011-11-27 15:20
                              回复