标题: 想做一个三国游戏
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:18 资料 短消息 只看该作者 QQ
想做一个三国游戏

这篇文章(把《三国》从光荣手中抢回来)写得非常好,不知能否借鉴一二?

最近重温《卧龙传》,这才是心目中的三国策略游戏,可惜没有续集。于是萌生念头,为什么不自己做一个呢?有没有志同道合者?

总结了一下,一个三国游戏,主要由以下几个对象:

1、武将
2、势力
3、城池
4、地图
5、兵种
6、军队(指在地图上行动的士兵)

其中,在以上六个对象的关系是,

1、地图包括许多城池,在地图上有若干(0...*)军队或若干(0...*)武将在移动。
2、一个势力包括若干(1...*)城池,及一个君主(武将),以及若干(0...*)属下(武将)。如果该势力和其他势力处于战争关系,该势力也许还有若干(0...*)军队
3、军队由若干(1...*)武将指挥,且由某些(1...*)兵种组成。

[ 本帖最后由 snowwaft 于 2007-8-20 22:05 编辑 ]


顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:24 资料 短消息 只看该作者 QQ
说说武将

一个武将可能有如下属性

[数据属性]

1、编号

1、姓名

[基本属性]
1、姓
2、名
3、字
4、出生年
5、寿命
6、性格
7、理想
8、喜好
9、相性(实际上是性格)

…………

[社会关系]
1、势力
2、结拜兄弟
3、朋友
4、仇敌
6、忠诚度
7、父亲
8、母亲
9、配偶
…………

[位置]
1、所在(城市或军团)
2、状态(死亡、在野、俘虏、一般、军团长等等)

[个人能力]
统御
武力
智力
政治
魅力

[其他]
声望
勇气
仁德
信义
冷静
合作

[战斗经验]
平原经验
水战经验
山地经验
攻城经验
守城经验
…………

例如,对于周瑜同学,可以描述成

[数据属性]
1、姓名                  周瑜

[基本属性]
1、姓                     周
2、名                     瑜
3、字                     公瑾
4、出生年               170        (这个是瞎掰的)
5、寿命                  73
…………

[社会关系]
1、势力                  2        (假设吴的势力编号为2)
2、结拜兄弟            893        (假设孙策的编号是893)
3、朋友                  561、552        (随便写几个)
4、仇敌                  800        (假设诸葛亮的编号是800)
5、相性                  50
6、忠诚度               100
7、父亲               
8、母亲
9、配偶                  999        (假设小乔的编号是999)
A、族编号              1230        (由于周瑜是周家的祖先,族编号就用他自己的)        
…………

[个人能力]
统御                      93
武力                      66
智力                      97
政治                      84
魅力                      92

[战斗经验]
平原经验                800
水战经验                997
山地经验                230
攻城经验                754
守城经验                720
…………

再写成xml,然后保存在硬盘上,一个武将的数据就完成了

QUOTE:
<?xml version="1.0" encoding="utf-8"?>
<person>
  <id>周瑜</id>
  
  <family_name>周</family_name>
  <first_name>瑜</first_name>
  <given_name>公瑾</given_name>
  <birthyear>170</birthyear>
  <life>73</life>

  <country>2</country>
  <brothers>
    <person id="893">孙策</person>
  </brothers>
  <friends>
    <person id="561">鲁肃</person>
    <person id="552">蒋干</person>
  </friends>
  <emeny>
    <person id="800">诸葛亮</person>
  </emeny>
  <character>50</character>
  <loyalty>100</loyalty>
  <father />
  <mother />
  <mate>
    <person id="999">小乔</person>
  </mate>
  <family>1230</family>

  <control>93</control>
  <force>66</force>
  <intelligence>97</intelligence>
  <politics>84</politics>
  <charm>92</charm>

  <plain>800</plain>
  <hill>997</hill>
  <water>230</water>
  <acity>754</acity>
  <dcity>720</dcity>
</person>

说明:
黑色:原始设定
红色:第一次修改

[ 本帖最后由 snowwaft 于 2007-8-22 19:29 编辑 ]


顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:39 资料 短消息 只看该作者 QQ
UML图

[ 本帖最后由 snowwaft 于 2007-8-21 09:22 编辑 ]
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:40 资料 短消息 只看该作者 QQ
工具

在DirectX和Flex(Flash)中,我还是决定使用Flex(Flash)作为开发平台。

理由有以下几点:

1、DirectX效率固然高,但是对于三国这种对界面要求不多的游戏,不免大材小用。
2、使用DirectX,程序设计会变得非常庞大,非常麻烦。
3、Flex(Flash),尤其是Flex 3.0开发的程序,其运行效率已经很不错。
4、使用Flex,有一个先天优势在于画面开发极其方便(可以和最新的flash 9制作的swf交互),也就是说,我们可以使用Flash制作绚丽的游戏特效,然后将该swf文件嵌入到程序中。
5、actionscript 3是一种面向对象语言,虽然比不上java、c#,但是已经足够了。
6、Flex(Flash)可以嵌入在web页中。
7、Adobe的新产品AIR可以通过Stream的方式读取本地文件(这点尤为重要)。

开发的具体思想是:把游戏里需要使用的数据以xml的形式存放在本地磁盘上,然后使用AIR的API(File、FileStream等)将这些数据读入内存。

对于AIR

1、读取一个xml文件

QUOTE:
private function loadData(fileName:String):Xml
{
    var dataFile:File = File.applicationResourceDirectory.resolve(fileName);
    var stream:FileStream = new FileStream();
    stream.open(dataFile, FileMode.READ);
    var xmlString = Xml(stream.readUTFBytes(stream.bytesAvailable));
    stream.close();
    return xmlString;
}

2、将一个xml文件保存到磁盘上

QUOTE:
private function saveData(data:Xml):void
{
    var dataFile:File = File.applicationResourceDirectory.resolve("data.xml");
    var stream:FileStream = new FileStream();
    stream.openAsync(dataFile, FileMode.WRITE);
    stream.writeUTFBytes(data.toXmlString());
    stream.close();
}

3、从一个Xml中解析出数据
actionscript中,处理xml非常简单:

QUOTE:
package {
    import flash.display.Sprite;

        public class XmlExample extends Sprite {               
                public function XmlExample() {
                        var employees:XML =
                                <employees>
                                        <employee ssn="123-123-1234">
                                                <name first="John" last="Doe"/>
                                                <address>
                                                        <street>11 Main St.</street>
                                                        <city>San Francisco</city>
                                                        <state>CA</state>
                                                        <zip>98765</zip>
                                                </address>
                                        </employee>
                                        <employee ssn="789-789-7890">
                                                <name first="Mary" last="Roe"/>
                                                <address>
                                                        <street>99 Broad St.</street>
                                                        <city>Newton</city>
                                                        <state>MA</state>
                                                        <zip>01234</zip>
                                                </address>
                                        </employee>
                                </employees>;

                        trace(employees.employee[0].address.zip);                             // 98765

                        trace(employees.employee[1].@ssn);                                     // 789-789-7890

                        trace(employees.employee.name);                                        // <name first="John" last="Doe"/>
                                                                                                                // <name first="Mary" last="Roe"/>

                        trace(employees..zip[0]);                                                     // 98765

                        trace(employees..@ssn[1]);                                                 // 789-789-7890

                        trace(employees..name);                                                     // <name first="John" last="Doe"/>
                                                                                                                // <name first="Mary" last="Roe"/>

                        trace(employees.employee[0].address.*);                              // <street>11 Main St.</street>        
                                                                                                                // <city>San Francisco</city>
                                                                                                                // <state>CA</state>
                                                                                                                // <zip>98765</zip>
                        var node:String = "zip";
                    trace(employees.employee[0].address[node]);                           // 98765
                    
                    var attribute:String = "ssn";
                    trace(employees.employee[1].@[attribute]);                             // 789-789-7890
                    
                        for each (var num:XML in employees..@ssn) {
                                trace(num);                                                              // 123-123-1234
                        }                                                                                     // 789-789-7890
                    
                        var ssnToFind:String = "789-789-7890";
                        trace(employees.employee.(@ssn == ssnToFind).toXMLString());
                                                                                                                // <employee ssn="789-789-7890">
                                                                                                                // <name first="Mary" last="Roe"/>
                                                                                                                // <address>
                                                                                                                // <street>99 Broad St.</street>
                                                                                                                // <city>Newton</city>
                                                                                                                // <state>MA</state>
                                                                                                                // <zip>01234</zip>
                                                                                                                // </address>
                                                                                                                // </employee>
            }
        }
}

4…………

[ 本帖最后由 snowwaft 于 2007-8-22 10:09 编辑 ]
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:40 资料 短消息 只看该作者 QQ
编辑器

[ 本帖最后由 snowwaft 于 2007-8-21 09:22 编辑 ]
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:40 资料 短消息 只看该作者 QQ
界面

[ 本帖最后由 snowwaft 于 2007-8-21 09:23 编辑 ]
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:40 资料 短消息 只看该作者 QQ
算法

[ 本帖最后由 snowwaft 于 2007-8-21 09:23 编辑 ]
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 21:44 资料 短消息 只看该作者 QQ
人工智能

[ 本帖最后由 snowwaft 于 2007-8-21 09:23 编辑 ]
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-20 22:01 资料 短消息 只看该作者 QQ
Demo

[ 本帖最后由 snowwaft 于 2007-8-21 09:24 编辑 ]
顶部
性别:未知-离线 jcjsdtc

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 破贼校尉
功绩 2
帖子 99
编号 39350
注册 2005-5-21


发表于 2007-8-20 22:08 资料 短消息 只看该作者
LZ占这么多楼,填起来费力了,还是很希望能看到一个新游戏的
顶部
性别:男-离线 神的儿子

Rank: 5Rank: 5
组别 士兵
级别 安国将军
功绩 8
帖子 815
编号 140361
注册 2007-4-16
来自 天堂


希望楼主早日制作出来, 本人只能支持.
顶部
性别:男-离线 佐裹义师
(佐裹将军)

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 179505
注册 2007-6-21
来自 中国


发表于 2007-8-21 21:34 资料 主页 短消息 只看该作者 QQ
说我也不懂
   但贴的回
顶部
性别:未知-离线 lincoln10
(月光疾风)


Rank: 8Rank: 8
组别 校尉
级别 平南将军
功绩 26
帖子 2076
编号 107139
注册 2007-2-4
来自 上海
家族 轩辕狼党


发表于 2007-8-22 09:23 资料 个人空间 短消息 只看该作者
看上去不算新鲜.和光荣的有何区别?
顶部
性别:未知-离线 snowwaft

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 13
编号 53173
注册 2005-11-14
来自 长春


发表于 2007-8-22 10:19 资料 短消息 只看该作者 QQ


QUOTE:
原帖由 lincoln10 于 2007-8-22 09:23 发表
看上去不算新鲜.和光荣的有何区别?

暑期无聊的产物罢了。

我从三国志2代开始接触三国游戏的,之后光荣的每一款三国游戏都玩过,4、6、8、9更是通关无数遍。

每一款新三国推出时,我都对它充满了希望。但是每次通关后,总是有那么一点失望。可能论坛里很多朋友都和我有着类似的经历,在每代光荣三国推出后,都傻傻地在论坛里提建议:下一代三国志该如何如何做才好。可惜的是,这些建议根本不能反馈到光荣公司,提来提去仅仅是自我满足的YY。

于是我萌发出了自己做一套三国游戏的想法,就这么简单……
顶部
性别:未知-离线 黄帝2

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 42
编号 208663
注册 2007-8-30


发表于 2007-8-30 02:29 资料 短消息 只看该作者
昨天看到有个三国游戏不错.我一会发下楼主侃侃
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2024-10-6 07:20
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015077 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP