我想创建一个自己的游戏,网络游戏,单击游戏都可以!请你们教教我,把过程详细的写出来!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想创建一个自己的游戏,网络游戏,单击游戏都可以!请你们教教我,把过程详细的写出来!相关的知识,希望对你有一定的参考价值。

我想创建一个自己的游戏,网络游戏,单击游戏都可以!请你们教教我,把过程详细的写出来!最好是免费的!如果要收费需要多少钱?

【教你如何架设传奇私服服务器】2008年03月18日 星期二 20:28首先你需要下载一个服务器端,建议使用一起玩传奇精装版第7版,一起玩传奇第7版本修正所有漏洞,绝对稳定的状态下运行,下载地址:
http://www.ycboy.com/Software.asp?id=9
服务器完全汉化.如果你要深入可以选择使用一起玩传奇第9版.

下载下来后,安装系统会选择默认路径安装,如果你是新人,建议不要修改默认路径,否则会造成许多麻烦的地方

安装后进去
D:\MIRSERVER
现介绍目录结构
GameLog 目录 游戏日值记录,里面有记录程序和记录目录,对应的软件和记录的文档方在其中
Gate_Server 目录 游戏登陆选择人物管理界面
Mir200游戏核心文件 我们在游戏中看见的修改都是通过修改这里来实现[这里就不忙介绍这些,我们现说说如何让自己的私服开通]

MUD2,DB保存地方、人物保存地方

我们现就不说其他了,现让你的私服运行起来
改IP和服务器名字往往就是新人遇到的问题,新人不建议自己手动修改,建议你用心意软件进行修改,每一个一起玩传奇精装的版本中都加入有这些相关的好用的软件,对于新人来说,是个很不错的软件.就算是技术比较成熟的用户,大家也都经常使用这个软件

进去心意软件后相关的设置一幕了然,很直接

安装私服必须安装DBC:DBC是DB Commander 2000 PRO的简称,需要自己下载,下载天空中有下载.

下载下来后进行安装

现在进入控制面板 允许 BDE ADMINISTRATOR 安 CTRL+N 按下 OK,然后在下面出现了一个STANDARD的选项,点中他安 CTRL+M 进行改名 改成 "HeroDB" 为什么有些人出现 无法读取 IP的问题就是因为这里的HeroDB没有正确填写,在这里要注意大小写最后就是设置路径了PATH 处设置成 "D:\mirserver\mud2\DB" 这个是默认安装后的路径
好了又把鼠标在 HeroDB上点击一下然后安下 "CTAL+A" 现在可以关闭他了,这里基本上私服应该可以正常运行了.

XP下无法读取 127.0.0.1的解决办法

XP系统在控制面板→管理工具→服务里面禁用SSDP Discovery Service服务可以解决和M2SERVER.EXE冲突的问题。

如果前面还是没有完全看明白看看这里

进入d:\mirserver\目录中
Gamelog [日值记录程序]
gate_server [登陆配置程序] 如果发现服务器没有开放这里的设置有问题
Mir200 [服务器核心文件夹] 一切的修改都在这里
Mud2 [人物数据、ID数据、物品、怪物、技能] 这里可以添加你需要的装备
Share [这里是收费服务器下使用到的] 个人不建议收费,所以就不介绍这里

[gata_server]
LoginGate 登陆配置
目录中的mirgata.txt格式如下

[server]
Color=Red
Title='一起玩传奇登录配置程序'
ServerPort=5500
GatePort=7000
index=0
Server1=127.0.0.1
Server2=
Server3=
Server4=
Server5=

如果发现服务器没有开放就是这里设置错了
gataport为游戏登陆端口,如果这里修改了,服务器当然显示关闭,大家如果发现无法登陆可能把默认端口更改了,改成7000就可以.

RunGate [刷新配置程序] 不要随意替换这个程序哦
Wordfilt.txt 语言过滤,比如我们在游戏中看见 **** 就是在这里的字母被屏蔽了,所以要设置过滤就设置这里

Mirgate.txt默认格式如下
[server]
Color=green
Title='一起玩传奇刷新配置程序'
ServerPort=5000
GatePort=7200
index=0
Server1=127.0.0.1
Server2=
Server3=
Server4=
Server5=

SelChrGate [信息转换配置]
Mirgate.txt 默认格式
[server]
Color=Green
Title='一起玩传奇信息转换配置'
ServerPort=5100
GatePort=7100
index=0
Server1=127.0.0.1
Server2=
Server3=
Server4=
Server5=

[Mir200]

ConLog 记录文件
Log [记录文件]
以上2个文件都是记录文件夹,主要记录M2SERVER产生的记录

Envir 整个游戏的主要配置文件夹

GuildBase 行会数据文件夹

Map 地图,如果启动m2,发现无法读取地图,就是地图不全

Notice 游戏公告

[mir200] 下的文件
!setup.txt
[Server]
ServerIndex=0
ServerName=一起玩传奇
ServerNumber=0
VentureServer=False
TestServer=TRUE
TestLevel=1
TestGold=0
TestServerUserLimit=1000
ServiceMode=False
NonPKServer=False

DBAddr=127.0.0.1
DBPort=6000
IDSAddr=127.0.0.1
IDSPort=5600
MsgSrvAddr=127.0.0.1
MsgSrvPort=4900

HumLimit=30
MonLimit=30
ZenLimit=30
NpcLimit=5
SocLimit=30
DecLimit=10
UserFull=500
ZenFastStep=300
SendBlock=1000
CheckBlock=8000
AvailableBlock=50
GateLoad=0
LogServerAddr=127.0.0.1
LogServerPort=10000
ViewHackMessage=TRUE
ViewAdmissionFailure=TRUE
;HalfFeeStart=2
;HalfFeeEnd=10

[Share]
BaseDir=D:\mirserver\Mir200\Share\
GuildDir=D:\mirserver\Mir200\GuildBase\Guilds\
GuildFile=D:\mirserver\Mir200\GuildBase\Guildlist.txt
VentureDir=D:\mirserver\Mir200\ShareV\
ConLogDir=D:\mirserver\Mir200\ConLog\
CastleDir=D:\mirserver\Mir200\Envir\Castle\
EnvirDir=D:\mirserver\Mir200\Envir\
MapDir=D:\mirserver\Mir200\Map\

[Setup]
ClientFile1=mir.dat
ClientFile2=
ClientFile3=
ItemNumber=1852640
HomeMap=0
HomeX=289
HomeY=618

[Names]
;ClothsMan='布衣(男)'
;ClothsWoman='布衣(女)'
;WoodenSword='木剑'
;Candle='蜡烛'
;BasicDrug='金创药(小量)'

GoldStone='金矿'
SilverStone='银矿'
SteelStone='铁矿'
CopperStone='铜矿'
SteelStone='绿宝石矿石'
CopperStone='红宝石矿石'
BlackStone='黑铁矿石'

Zuma1='祖玛卫士'
Zuma2='祖玛雕像'
Zuma3='祖玛弓箭手'
Zuma4='楔蛾'

Bee='蝙蝠'
Spider='爆裂蜘蛛'

WomaHorn='沃玛号角'
ZumaRelic='祖玛头像'

[NECKLACE]='祈祷项链'
[RING]='祈祷戒指'
[HELMET]='祈祷头盔'
[WEAPON]='祈祷之刃'
[ARMRING]='祈祷手镯'

如果游戏中无法创建行会、挖矿、申请攻城,就是这里没有配置对

[envir]
Castle 沙巴克配置
MapQuest_def 临时触发文件夹
Market_prices
Market_saved
market_upg

主要由NPC产生,如果游戏中你修改了物品价格及其那里买什么,而没有实现,就清空前2个文件夹,比如在服务器没有开启状态下
MonItems 怪物暴物品文件夹
Npc_def 自动刷新的NPC文件夹
market_def 需要进行手动刷新的文件夹 [主要配置于不处于安全区的NPC] 就是要在NPC上实现买东西,存东西,特殊修理,卖物品的NPC必须存方于此文件夹中

GuardList.txt 卫士文件
MakeItem.txt 毒药制作
MapInfo.txt 地图信息
MapQuest.txt 临时触发文件
Merchant.txt 在market_def中存放的npc全部要在这里配置
Mongen.txt 刷怪文件
MiniMap.txt 显示左上角地图文件
Npcs.txt 配置NPC_DEF文件中的npc
StartPoint.txt 安全区配置
UnbindList.txt 打包文件配置
参考技术A ............创建
开个cs房间也算你创建的游戏了
参考技术B 你怕是开玩笑哦?开发一个游戏有你想的那么简单的话那人人都去开发游戏了.一个游戏开发需要一个强悍的团队! 参考技术C 我比较喜欢玩奇迹,我知道怎么做奇迹,就是复杂了点:

1.首先安装SQL2000
2.先把借压出来的MuOnline文件夹放到D:\\下
3.把data也放在D:\\下
4.其余文件夹不动把muserver整个文件夹放在D:\\
5.将D盘muserver和MuOnline目录下的所有后缀名为.cfg中的IP地址全部改成自己网卡IP
6.下将muserver目录中的启动目录里的4和5 2个快捷方式属性里把IP修改为自己IP
7.在SQL新建muonline数据库,右击数据库名--所有任务--恢复备份--从设备-然后选择设备(选到服务端目录里的SQL目录里的musql.bak)还原数据库
8.在系统数据源(ODBC)-系统DNS处,新建MuOnline,MuOnlineJoinDB,USELOG,Event,全部指向SQL里的muonline库
9.下线人物丢失处理方法:把SQL数据里的:vCharacterPreview表删除了然后用查询分析器的 运行条命令:CREATE VIEW vCharacterPreview AS SELECT Name, cLevel, Class, Inventory FROM Character
10.对外方法将所有的IP地址改为自己的外网IP将所有的客户端口55901改成44405
11.经验配置方法将commonloc等文件中AddExperience = 1哪个1改多少就是几倍经验
12.按启动目录里的12345顺序启动
13.服务器配置如果已经完成的话那么按照这个安装配置就可以安装服务器了!^_^

奇迹服务器架设完全攻略(新手篇)
作者:冷场王 时间:11月25
在准备架设服务器之前,请先确保你满足以下条件:
OS:Windows 2000 Server+SP4
数据库:SQL2000企业版+SP3
CPU:Intel 1G以上(建议2G)
RAM:512以上(建议1G)
服务端:下载本论坛内的完美版本
好,我们从每个服务端程序启动顺序开始。把服务器端解压缩到D:,并把服务端内的Data所有文件复制到D:内。并把相应的cfg.ini.txt配置文件内的IP改为127.0.0.1。
D:
├—MuServer
│ ├—Altiris
│ ├—ConnectServer
│ ├—data
│ ├—DataServer
│ ├—GameServer
│ ├—JoinServer
│ ├—LogCatch
│ └—Mu GameManager
├—Lang
└—Bin
第一步:建立数据库,先在应确保SQL正常运行。开始-程序-Microsoft SQL Server-企业管理器

进入SQL的安全性-登录-右键新建登录-名称admin身份验证密码thdzlqhem-服务器角色在第一个前现打勾-数据库访问MuOnline前打勾-数据库角色允许前二项打勾。相同的建立名称为MuOnlineAdmin的用户密码wkfwkRnfRnf

进入SQL的数据库-右键新建数据库-名称MuOnline-进入MuOnline-右键所有任务-还原数据库-从设置-指向下载的数据库所在的目录-选项中把g:\\Mudata\\MuOnline_data.mdf和g:\\Mudata\\MuOnline_log.ldf改为D:\\Mudata\\MuOnline_data.mdf和D:\\Mudata\\MuOnline_log.ldf之后确定还原数据库。

现在在进入开始-程序-管理工具-数据源-系统DSN-添加-SQL Server-名称MuOnline-先使用用户密码验证-登录IDadmin-密码thdzlqhem-数据库指向MuOnline

相同的建立MuOnlineJoinDB,Event,USELOG。但要注意登录ID为MuOnlineAdmin,密码wkfwkRnfRnf

然后进入D:\\muserver\\DataServer\\中,用记事本建立两个.bat批处理文件,文件名自己取,我的为1.bat,2.bat,
1.bat内容:dataserver.exe 55960
2.bat内容:dataserver.exe 55962
现在就可以运行1和2了。

第二步:运行ConnectServer内的CS

第三步:进入D:\\muserver\\JoinServer中建立一个3.bat批处理文件
内容:JoinServer.exe /p55970 /ca127.0.0.1 /cp55557

第四步:进入D:\\muserver\\GameServer目录下建立4.bat批处理文件
内容:GameServer.exe 127.0.0.1 55970 127.0.0.1 55960 55901

到此,服务器设置完成。现在就可以用0.74的客户端进入游戏了

参考资料:http://zhidao.baidu.com/question/1410684.html

参考技术D 玩魔兽就不错 天龙更新太快了 跟不上他门的步伐 搜狐去死吧 第5个回答  2008-09-07 办私服,偷人家的知识产权
要不就老老实实找个游戏制作学校学几年

创建游戏循环线程

【中文标题】创建游戏循环线程【英文标题】:create game loop thread 【发布时间】:2013-02-27 19:00:32 【问题描述】:

您好,我刚刚搞砸了多边形和 awt。我已经创建了一个 Jframe 并且可以绘制多边形并让其中一个通过按键移动。

我想知道如何启动一个游戏循环线程(以及将它放在哪里!),它将独立更新 jframe。

通过谷歌搜索,我相信我应该有一个线程用于用户输入,一个线程用于游戏本身。

目前我已经在 board 类上实现了 KeyListener(代码如下所示),我应该把它放到它自己的类中并使其实现可运行吗?就代码而言,我只是在 keypressed() 方法中重新绘制 JFrame所以我可以看到它移动正确

一天中的大部分时间都在做这件事,我让自己非常非常困惑 :) 一如既往,非常感谢您的帮助!

另外,当我从在线教程中学习时,我应该使用 JPanel 而不是 JFrame 和 paintComponent() 而不是 paint()?

    import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.AffineTransform;

import javax.swing.JFrame;

public class Board extends JFrame implements KeyListener
    AffineTransform identity = new AffineTransform();
    Graphics2D g2d;

    Ship ship = new Ship();

    public static final int ALIENS = 3;
    Alien[] alien = new Alien[ALIENS];


    Board()
        super("The Board");
        setSize(1280,1024);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(Color.BLACK);
        for(int x=0;x<ALIENS;x++)
            alien[x]=new Alien();
        
    

    public void paint(Graphics g)
        super.paint(g);
        addKeyListener(this);
        //draw ship
        g2d = (Graphics2D)g;    
        g2d.setTransform(identity);
        g2d.translate(ship.getxPos(),ship.getyPos());
        g2d.scale(2,2);
        g2d.setColor(Color.ORANGE);
        g2d.fill(ship.getShape());
        g2d.setColor(Color.BLACK);
        g2d.draw(ship.getShape());

        // draw aliens
        for(int x=0;x<ALIENS;x++)
            //if alien alive
            if(alien[x].isAlive())
                //draw alien
                g2d = (Graphics2D)g;    
                g2d.setTransform(identity);
                g2d.translate(alien[x].getxPos(),alien[x].getyPos());
                g2d.scale(2,2);
                g2d.setColor(Color.BLUE);
                g2d.fill(alien[x].getShape());
                g2d.setColor(Color.BLACK);
                g2d.draw(alien[x].getShape());
            
        
    //end paint


    /*****************************************************
     * key listener events
     *****************************************************/
    public void keyReleased(KeyEvent k)  
    public void keyTyped(KeyEvent k)  
    public void keyPressed(KeyEvent k) 
        int keyCode = k.getKeyCode();

        switch (keyCode) 

        case KeyEvent.VK_A:
            //move ship left
            if(ship.getxPos()<20)
                ship.setxPos(20);
            else
            ship.setxPos(ship.getxPos()-1);
            break;
        case KeyEvent.VK_D:
            if(ship.getxPos()>1260)
                ship.setxPos(1260);
            else
            ship.setxPos(ship.getxPos()+1);
        
       repaint();
    //end keypressed event

    public static void main(String[] args)
        new Board();
    

【问题讨论】:

【参考方案1】:

这些答案在某种程度上取决于您要创建的游戏类型。

通过谷歌搜索,我相信我应该有一个线程用于用户输入,一个线程用于游戏本身。

您创建了一个主游戏循环,该循环在其自己的线程中运行。在伪代码中

while (running) 
    update game model
    draw game
    wait x milliseconds
 

您的用户输入将直接更新游戏模型。如果需要计算机做出动作或对您的动作做出反应,则游戏循环会更新游戏模型。然后,游戏循环读取游戏模型并根据模型中的值绘制游戏。

目前我已经在board类上实现了KeyListener(代码如下),我应该把它放到它自己的类中,让它实现runnable吗?

是的,你应该把 KeyListener 放到它自己的类中。不,您不必将其设为单独的线程。

为了避免以后的麻烦,应该在 Event Dispatch 线程上定义和使用 Swing 组件。

这是你的做法。

public static void main(String[] args) 
    SwingUtilities.invokeLater(new Runnable() 
        public void run() 
            new Board();
        
    );

我应该使用 JPanel 代替 JFrame 并使用paintComponent() 代替paint() 吗?

是的。

您应该在 JFrame 内有一个 JPanel。 JPanel 是您使用paintComponent 方法执行绘图游戏伪代码的地方。

有些人会不同意我的观点,但我发现最好游戏中的每个对象都有一个绘制方法来绘制自己。

public void draw(Graphics g)

游戏模型还有一个 draw 方法,可以绘制模型中的所有对象。

JPanel paintComponent 方法如下所示:

public void paintComponent(Graphics g) 
    super.paintComponent(g);
    gameModel.draw(g);

【讨论】:

以上是关于我想创建一个自己的游戏,网络游戏,单击游戏都可以!请你们教教我,把过程详细的写出来!的主要内容,如果未能解决你的问题,请参考以下文章

创建游戏循环线程

HTML画布射击游戏:在我点击的地方没有射击,移动播放器时没有链接

Python小游戏自己动手编写,你能写出几个(分享版)

创建一个猜谜游戏直到我想停下来

创建特定窗口后如何调整其大小?

统一精灵表性能