PHP怎么做回合制游戏,希望我的世界高手指导马桶一下

今天开始做战斗,回合制战斗代码实现第一篇,从头开始,简单的2d回合制游戏
拖了这么久,终于弄到战斗系统了,不过仙剑demo的回合制战斗比较复杂,所以我们从最简单的2d回合制游戏战斗开始讨论,看看游戏战斗系统代码什么样子。
还记得回合制战斗的流程图吗,UI的时候我曾经贴过,,我们看下我们的战斗过程动画是什么样的,不要吐槽动画,我从神仙道用ps抠出来,没那么精细,反正不影响代码使用,我们直接看代码结构,这是bin目录也就是我们的生成目录(忘了说了,开发环境flashdevelop4.3,纯as3)lib路径下面这个很重要(编译过程中需要里面的东西),因为fight.swc的底层写的很好,所以,我们的src代码相对简单,sampleBnt.as是我写的一个按钮类(比较简陋),main.as文档类(这是我们工程的代码入口类),fightmap.as战斗地图类,fightstarttip.as是我们的数据解析,战斗状态判断类,npc文件夹下面是控制动画和战斗逻辑部分,我们上代码,
import BtnTip.SampleB
import com.FightTip.FightStartT
import flash.display.S
import flash.events.E
* @author swordfishx
[SWF(width="1250",height="650",frameRate="24",backgroundColor="0")]
public class Main extends Sprite
public function Main():void
if (stage)
addEventListener(Event.ADDED_TO_STAGE, init);
private function init(e:Event = null):void
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
addChild(new FightStartTip());
}文档类没有什么东西,这里我们把fightStartTip类addchlid到舞台中,
package com.FightTip
import flash.display.S
import com.ot.FightM
import com.ot.BaseR
import com.npc.XMLL
import flash.events.MouseE
import flash.display.L
import flash.events.E
import flash.net.URLR
import flash.net.URLL
import flash.geom.P
import flash.system.S
* @author swordfishx
//[SWF(width="1250",height="650",frameRate="24",backgroundColor="0")]
public class FightStartTip extends Sprite
private var _fight_mc:S
//xml载入类
private var loader:XMLL
private var _i:int = 0;
public function FightStartTip()
System.useCodePage =
//载入属性Xml
loader = new XMLLoader();
loader.onLoadComplete = initM
loader.load("data/fight/fight.xml", XMLLoader.GB2312);
public function initMap(xml:XML):void
_fight_mc = new Sprite();
addChild(_fight_mc);
fightStart("fight002");
//战斗开始
public function fightStart(mapValue:String = "", fun:Function = null):void
//通过名称显示相应地图
var fightmap:FightMap = new FightMap("data/fight/" + mapValue + ".xml", fun, this);
_fight_mc.addChild(fightmap);
//战斗结束
public function fightEnd(fun:Function):void
overEnd();
//BaseRemove.removeAllChildren(_fight_mc);
//_fight_mc.visible =
public function overEnd():void {
trace("到这里就先结束了。");
dispatchEvent(new Event("FightStartTipSTR"));
trace("发送成功");
catch (err:Error)
trace("没有发送");
}上面的流程图很清楚,这里的数据应该填写的地方,我们看下fightstart方法,参数fight002,我们看下这个xml配置文件里面写了什么,
&?xml version="1.0" encoding="GB2312"?&
&map&fight02.jpg&/map&
&list&jianyu&/list&
&list&daji&/list&
&list&shibing&/list&
&list&shibing&/list&
&list&shibing&/list&
fight02.jpg是背景图,&our&是我方阵营,&enemy&是敌方,这个xml可以根据list的增减进行拓展(网络的话,只需要在解析部分修改一下,把赋值过程从xml解析改成网络监听方法解析的字符串就可以了),
package BtnTip
import flash.display.S
import flash.display.S
import flash.display.SimpleB
import flash.text.TextF
import flash.text.TextF
* @author swordfishx
public class SampleBnt extends Sprite
public function SampleBnt(acol:uint = 0xffffff, bcol:uint = 0xffffff,ccol:uint = 0xffffff,Str:String = "btn", tfcol:uint = 0xffffff):void
var a:Sprite = new Sprite();
huitu(a, acol, Str, tfcol)
var b:Sprite = new Sprite();
huitu(b, bcol, Str, tfcol);
var c:Sprite = new Sprite();
huitu(c, ccol, Str, tfcol);
var abc:SimpleButton = new SimpleButton(a, b, c, c);
addChild(abc);
public function huitu(obj:Sprite, col:uint = 0xffffff, str:String = "btn", tfcol:uint = 0xffffff):void
obj.graphics.beginFill(col);
obj.graphics.drawRect(0, 0, 80, 30);
obj.graphics.endFill();
var lable:TextField = new TextField();
lable.text =
lable.width = 80;
lable.height = 30;
var tf:TextFormat = new TextFormat();
tf.size = 24;
tf.color =
lable.selectable =
lable.setTextFormat(tf);
obj.addChild(lable);
}这是个简陋的画按钮方法,当然可以自己修改,把里面的huitu方法改成图片,或者在里面直接加一个就行了,
package com.npc {
import com.ot.ImageC
import com.ot.FightM
import flash.events.E
import flash.display.S
import flash.display.L
import flash.display.B
import flash.display.BitmapD
import flash.net.URLR
import flash.geom.P
import flash.geom.R
import flash.text.*;
public class CharacterMC
extends Sprite{
//位图数据数组
protected var _bitmapArr:A
//加载图片用
private var _loader:L
//读取图片用Bitmap
private var _image:B
//头像Bitmap
public var _imageFace:B
//用以显示的bitMap对象
private var _peopleBitmap:B
//图片列数
private var _row:
//图片行数
private var _col:
//图片列数
private var _rowatt:
//图片行数
private var _colatt:
//图片显示控制
public var _keys:O
//目前显示图片列号
private var _pointer:int = 0;
//图片显示速度控制
private var _count:Number = 0;
//图片显示速度
private var _speed:N
//攻击图片地址
private var _attImage:S
//行走图片地址
private var _strImage:S
public var _hp:TextField = new TextField();
public var _hpValue:int = 100;
public var _fun:F
public var _fun2:F
//战斗类Class
private var _fightMap:FightM
//HP伤害显示
public var _hpHert:TextField = new TextField();
//人物名称
public var _nameTxt:S
//图片翻转buff的宽度
private var picTurnwidth:int = 128;
//Class参数依次为:战斗类Class,头像地址,行走图片地址,攻击图片地址,图片显示控制,行走图片行数,行走图片列数,攻击图片行数,攻击图片列数,显示速度
public function CharacterMC(fightMap:FightMap = null,faceImage:String = "",strImage:String = "",attImage:String = "",keys:Object = null,row:int = 2,col:int = 4,rowatt:int = 1,colatt:int= 5,speed:Number = 0.15) {
_fightMap = fightM
_strImage = strI
_attImage = attI
//头像图片加载对象;
_loader = new Loader();
_loader.contentLoaderInfo.PLETE, onComplete);
_loader.load(new URLRequest(faceImage));
//头像加载完成
public function onComplete(event:Event):void {
_imageFace = Bitmap(_loader.content);
_imageFace.width = 120;
_imageFace.height = 120;
//行走图片加载对象;
_loader = new Loader();
_loader.contentLoaderInfo.PLETE, onCompleteMov);
_loader.load(new URLRequest(_strImage));
public function setHp(hert:int):void{
_hpHert.htmlText = "&font color='#FF0000'&-" + hert + "&/font&";
_hpHert.height = 20;
_hpHert.y = 0;
//伤害图片显示
var hertDir:
if(int(_keys["playDirection"]) == 2){
setDir(5);
setDir(7);
//HP伤害显示
addEventListener(Event.ENTER_FRAME, hertFrame);
//HP值计算与显示
_hpValue -=
_hp.htmlText = "&font color='#FF0000'&" + _hpValue + " / 100&/font&";
//HP值为0时,显示撤退信息
if(_hpValue == 0){
_fightMap._characterShow.show_txt.appendText( _nameTxt +
"撤退\n");
//行走图片加载完成
public function onCompleteMov(event:Event):void {
_image = Bitmap(_loader.content);
//将传入的位图数据拆分成小块,装入bitmapArr
_bitmapArr=ImageCtrl.divide(_image,_row,_col);
_peopleBitmap = new Bitmap();
addChild(_peopleBitmap);
//HP初始化
_hp.x = 0;
_hp.y = 48;
_hp.width = 48;
_hp.height = 20;
_hp.htmlText = "&font color='#FF0000'&" + _hpValue + " / 100&/font&";
addChild(_hp);
addChild(_hpHert);
_hpHert.y = -50;
//攻击图片加载对象;
_loader = new Loader();
_loader.contentLoaderInfo.PLETE, onCompleteAtt);
_loader.load(new URLRequest(_attImage));
//图片水平翻转处理
private function imageTurn(loaderBmp:Bitmap):Bitmap {
var w:Number = loaderBmp.width / picT
var imagebit:BitmapData
= new BitmapData(loaderBmp.width,loaderBmp.height,true, 0xffffffff);
for(var i:int = 0; i & picT i++) {
imagebit.copyPixels(loaderBmp.bitmapData,
new Rectangle( i * w, 0,w, loaderBmp.height),
new Point((picTurnwidth-1 - i) * w ,
var __image:Bitmap = new Bitmap(imagebit);
//攻击图片加载完成,将图片按照 [0-3上下左右 4左攻击5左倒6右攻击7右倒]的顺序装入数组
public function onCompleteAtt(event:Event):void {
_image = Bitmap(_loader.content);
//将传入的位图数据拆分成小块,装入bitmapArr
var bitmapArr:Array=ImageCtrl.divide(_image,_rowatt,_colatt);
var bitArr:A
var i:int = 0;
bitArr = new Array();
for(i = 0;i&bitmapArr.length - 1;i++){
bitArr.push(bitmapArr[i][0]);
_bitmapArr.push(bitArr);
bitArr = new Array();
bitArr.push(bitmapArr[bitmapArr.length - 1][0]);
_bitmapArr.push(bitArr);
//攻击图片翻转
_image = imageTurn(_image);
bitmapArr=ImageCtrl.divide(_image,_rowatt,_colatt);
bitArr = new Array();
for(i = 0;i&bitmapArr.length - 1;i++){
bitArr.push(bitmapArr[i][0]);
_bitmapArr.push(bitArr);
bitArr = new Array();
bitArr.push(bitmapArr[bitmapArr.length - 1][0]);
_bitmapArr.push(bitArr);
var dir:int = int(_keys["playDirection"]);
_peopleBitmap.bitmapData = _bitmapArr[dir][0];
public function startFrame():void{
//角色动作开始;
addEventListener(Event.ENTER_FRAME, onFrame);
public function endFrame():void{
//角色动作停止;
removeEventListener(Event.ENTER_FRAME, onFrame);
//角色动作改变
public function setDir(dir:int):void{
_keys["playDirection"] =
_pointer = 0;
_count = 0;
startFrame();
//_keys["playDirection"] 0-3上下左右 4左攻击5左倒6右攻击7右倒
public function onFrame(event:Event):void {
var dir:int = int(_keys["playDirection"]);
_peopleBitmap.bitmapData = _bitmapArr[dir][_pointer];
_count += _
_pointer += int(_count) ;
_count=_count%1;
if(_pointer &= _bitmapArr[dir].length){
endFrame();
_pointer = 0;
_count = 0;
switch(dir){
setDir(2);
setDir(3);
setDir(2);
setDir(3);
//伤害显示
public function hertFrame(event:Event):void {
if(_hpHert.y & -50){
_hpHert.y -= 2;
removeEventListener(Event.ENTER_FRAME, hertFrame);
_hpHert.text = "";
}图像处理类,我们bin文件夹里面的序列图片,在这个类里面被分割,生成动画(如果使用cocos2dx和u3d的话,可以直接做动画,当然flash也可以,当时做的时候就是一个评估,因为游戏最终流产,所以没有做更好的效果,这里见谅,只是给大家提供个思路),
package com.npc{
import com.ot.Map001;
import com.ot.ImageC
import flash.net.URLL
import flash.display.S
import flash.display.B
import flash.display.BitmapD
import flash.display.L
import flash.events.E
import flash.net.URLR
import flash.events.KeyboardE
import flash.geom.P
import flash.utils.T
import flash.events.TimerE
public class NpcClass extends Sprite {
//声明time函数
private var _timer:T
//位图数据数组
protected var _bitmapArr:A
//播放的顺序 0为上 1为下 2为左 3为右
private var _playDirection:int = 1;
//当前帧显示的位图数据的索引
private var _bitmapIndex:int=0;
//图片列数
private var _row:
//图片行数
private var _col:
private var _pointer:
//加载图片用
private var _loader:L
//读取图片用
private var _image:B
//用以显示的bitMap对象
private var _peopleBitmap:B
//当前地图类
private var _mapBack:Map001;
//移动步数控制
public var _moveCtrl:int = 0;
//移动步长
public var _moveLong:int = 12;
private var _isKeyDown:Boolean =
//NPC在地图中坐标
private var _mapPoint:P
//滚屏控制
private var _mapIsRoll =
//NPC是否可移动
private var _canMove:Boolean =
//NPC是否已显示
private var _isAdd =
public var _npcName:S
//构造器 mapBack:当前地图 player:NPC图片 npcName:NPC名称 row:图片列数 col:图片行数
public function NpcClass(mapBack:Map001,player:String,npcName:String,row:int,col:int,point:Point = null,timer:Timer=null,canMove:Boolean = false) {
_mapBack = mapB
_npcName = npcN
_canMove = canM
_mapPoint =
_timer.addEventListener(TimerEvent.TIMER, timerHandler);
//图片加载对象;
_loader = new Loader();
_loader.contentLoaderInfo.PLETE, onComplete);
_loader.load(new URLRequest(player));
public function onComplete(event:Event):void {
_image = Bitmap(_loader.content);
//将传入的位图数据拆分成小块,装入bitmapArr
_bitmapArr=ImageCtrl.divide(_image,_row,_col);
//trace("_bitmapArr = " + _bitmapArr);
_peopleBitmap = new Bitmap(_bitmapArr[0][0]);
_mapBack._npcFrame.addChild(_peopleBitmap);
//NPC坐标计算
_peopleBitmap.x = (_mapPoint.x - _mapBack._mPoint.x)*48;
_peopleBitmap.y = (_mapPoint.y - _mapBack._mPoint.y)*48;
//NPC动作开始;
_timer.start();
//获得NPC名称
public function getName():String{
return _npcN
public function drowNpc():void{
_peopleBitmap.bitmapData = _bitmapArr[_playDirection][_pointer];
//显示新的NPC动作图像;
if(_moveCtrl & 0){
//NPC坐标计算
switch (_playDirection) {
_peopleBitmap.y = _peopleBitmap.y - 12;
_peopleBitmap.y = _peopleBitmap.y
_peopleBitmap.x = _peopleBitmap.x
_peopleBitmap.x = _peopleBitmap.x
//NPC动作循环处理;
if (_pointer & _row - 1) {
_pointer ++;
_pointer = 0;
//定时器运行事件;
private function timerHandler(event:Event):void {
drowNpc();
//移动控制
private function toMove():void{
if(!_canMove){
//移动达到一个坐标判断
if(_moveCtrl &= 4 || _moveCtrl == 0){
_moveCtrl =0;
toCheckMove();
_moveCtrl += 1;
//随机移动
private function toCheckMove():void {
var intRand:int = Math.floor(Math.random()*15);
if(intRand & 4){
_playDirection = intR
switch (_playDirection) {
checkUp();
checkDown();
checkLeft();
checkRight();
//坐标随NPC移动
private function npcChange(npcX:int,npcY:int):void{
_mapBack._npcList.remove(_mapPoint.x + "," + _mapPoint.y);
_mapBack._npcList.put((_mapPoint.x + npcX )+ "," + (_mapPoint.y + npcY),this);
//右移判断
private function checkRight():void{
if(checkMap(_mapPoint.x + 1,_mapPoint.y)){
npcChange(1,0);
_mapPoint.x += 1
_moveCtrl += 1;
//左移判断
private function checkLeft():void{
if(checkMap(_mapPoint.x - 1,_mapPoint.y)){
npcChange(-1,0);
_mapPoint.x -= 1;
_moveCtrl += 1;
//下移判断
private function checkDown():void{
if(checkMap(_mapPoint.x, _mapPoint.y + 1)){
npcChange(0,1);
_mapPoint.y += 1;
_moveCtrl += 1;
//上移判断
private function checkUp():void{
if(checkMap(_mapPoint.x,_mapPoint.y - 1)){
npcChange(0,-1);
_mapPoint.y -= 1;
_moveCtrl += 1;
//障碍判断
private function checkMap(mapX:int,mapY:int):Boolean{
var mapDate:Array = _mapBack.getMapDate();
if(mapDate[ mapY][mapX] == 0){
if(_mapBack._npcList.getValue(mapX + "," + mapY) == null && !_mapBack.isPlayer(mapX,mapY)){
动画的控制,
package com.npc{
import com.ot.Map001;
import com.ot.ImageC
import com.ot.BaseR
import com.mains.S
import flash.net.URLL
import flash.display.S
import flash.display.B
import flash.display.BitmapD
import flash.display.L
import flash.events.E
import flash.net.URLR
import flash.events.KeyboardE
import flash.geom.P
import flash.utils.T
import flash.events.TimerE
import flash.net.URLLoaderDataF
import flash.utils.ByteA
public class PeopleClass extends Sprite {
//声明time函数
private var _timer:T
//位图数据数组
protected var _bitmapArr:A
//播放的顺序 0为上 1为下 2为左 3为右
private var _playDirection:int = 1;
//当前帧显示的位图数据的索引
private var _bitmapIndex:int=0;
//图片列数
private var _row:
//图片行数
private var _col:
private var _pointer:
//加载图片用
private var _loader:L
//读取图片用
private var _image:B
//用以显示的bitMap对象
private var _peopleBitmap:B
//当前地图类
private var _mapBack:Map001;
//移动步数控制
public var _moveCtrl:int = 0;
//移动步长
public var _moveLong:int = 12;
private var _isKeyDown:Boolean =
//人物在画面中坐标
private var _point:P
//人物在地图中坐标
private var _mapPoint:P
//滚屏控制
private var _mapIsRoll:Boolean =
//显示对话类
private var _my_talk:T;
//人物名称
public var _peopleName:S
//载入图片宽
private var loadpicwidth:int = 48;
//载入图片高
private var loadpicheight:int = 48;
//载入图片高
//构造器 mapBack:当前地图 player:人物图片 row:图片列数 col:图片行数
public function PeopleClass(mapBack:Map001,player:String,peopleName:String,row:int,col:int,point:Point = null,timer:Timer=null) {
_mapBack = mapB
_peopleName = peopleN
_my_talk = new Talk(_mapBack);
if(point == null){
_point = new Point(5,5);
_mapPoint = new Point(5,5);
_point = new Point(point.x*48,point.y*48);
_mapPoint = new Point(_mapBack._mPoint.x + point.x,_mapBack._mPoint.y + point.y);
//图片加载对象;
_loader = new Loader();
_loader.contentLoaderInfo.PLETE, onComplete);
_loader.load(new URLRequest(player));
//用来添加侦听器,侦听键盘
_mapBack.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
_mapBack.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
public function onComplete(event:Event):void {
_image = Bitmap(_loader.content);
//将传入的位图数据拆分成小块,装入bitmapArr
_bitmapArr=ImageCtrl.divide(_image,_row,_col);
_peopleBitmap = new Bitmap(_bitmapArr[_playDirection][_p找了一年的回合制网游了,也交流一下心得。_回合制游戏吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:12,618贴子:
找了一年的回合制网游了,也交流一下心得。
1 楼主是个娱乐玩家只是谈谈自!己!的见解,有什么欠缺的欢迎补充。但请素质回帖。2 只讨论如下几款楼主亲测的,排名不分先后。 (1)梦幻西游(2)大话西游(3)神武(4)QQ仙灵(5)神雕侠侣(6)画江山(7)梦幻剑侠(8)梦幻诛仙(9)桃花源记(10)灵域(11) 问道3 不要再问烧不烧钱了,天下没有免费的午餐。烧多烧少看你自己的心态玩法,想要真正免费的游戏去玩竞技类的游戏。
3 500百买个号后期投入...
求个免费型的 最好吧友...
久违的宋体字,虽然有...
吧里应该很多新人小白吧...
最近好浮躁想找款回合制...
回合制网游「盖世豪侠」非RMB首选回合制网游,新服来袭!武侠新名人登场,新增多样搭配!回合制网游「盖世豪侠」火爆回合制网游,今日新服!经典原著,挚爱武侠,体验不平凡武侠梦!
最开始接触的是大话西游,那时候没钱也没闲玩了一段时间出梦幻就再没玩了,现在人气也不行了,才出了免费的大话。但是都10年了还是原来的那个画质,当初感觉不错现在就感觉渣的不行,再想回去也玩不下去了。
梦幻西游,10年一梦。不是只有新出才好。好的游戏是能经历住时间考验。梦幻就完美的诠释了这一点,人气,门派平衡,游戏性等等都是回合制的第一没有之一。最可怕的是它的经济系统调控之完善,我物价都没它控制的好,里面的装备道具比房地产还保值。其他游戏是坑钱,肉包子打狗。这个游戏相当于存钱投入多少还能卖掉多少。不要光说是回合制游戏就是整个国产游戏界也很少有比梦幻做的更好的了。如果是有钱的玩家推荐还是玩梦幻,安全有保障。下面说说它的不足,楼主是因为点卡涨价走的,保证的4点的绝不涨价,在新春佳节送来6点一小时和一些搞笑的经验补偿。这就算了都喊着猪肉都涨了点卡能不涨?对此的回应是在中喊话直接强行掉线,再喊苦度虚空,论坛发一个帖子删一个。霸王条款你敢不玩。还有一点是可以预见的以后点卡肯定还是会涨价,楼主上了藏宝阁,还赚了一些钱这也是楼主玩这么多回合制唯一卖号赚钱游戏。10年梦幻也改成了全民土豪的,点卡道具双收费。现在能在梦幻里好好娱乐的,不是土豪就是商人,至于那些所谓五开的平民不想讨论,游戏玩那个地步不知道是娱乐还是找罪受的。一些骨子里逞强斗狠土豪玩家即便是花个几十万也没办法称霸一方,随手扔个几千块在其他还能找到一点优越感这个游戏还是算了吧。土豪神豪无数,凡是有利弊。也是因为这样的情况梦幻的游戏环境也是最好的,很少能看到装B刷屏的脑残,也遇不到一队大号疯狂杀小号的报复社会。玩家素质较高想好好的玩就是前期多花点钱,要么有固定队伍也行。后期多花时间也能把钱赚回来,也得是有钱又有闲的玩家才可以消费的。
再过来神武,因为它的装备宝宝都没办法交易所以是目前最绿色,贫富差距最小的。只要花时间绝对能玩好绝对的免费网游。因此游戏的人气也是爆满。但是对于一些不喜欢坑钱做装备合宝宝的玩家来说只能是遗憾。楼主也不喜欢给宝宝上书,看脸的东西十赌九输,楼主玩其他也都是收现成的宝宝装备,收的比做的成品便宜太多。最好说一点很多人提到神武就说是抄袭梦幻,且不说神武的老总就是以前梦幻的策划,除了神武放眼望去哪个不是梦幻模板,看惯了的飞机见吐了三刀。就是所谓的创新也都是在梦幻的基础上加个飞行系统,副本系统,坑钱系统什么的。整个游戏界都是这样子,你还说神武或者其他游戏是抄袭?
梦幻诛仙,神雕侠侣都是完美的让人又爱又恨。完美出品画面必属精品,它的游戏画面是第一没有之一,楼主不想上图片的原因是截图真心看不出东西来,有些游戏的截图很好看进去一玩就是渣。不光是画面,还有人物的打击感,特效场景这都是其他根本所看不到。至此完美一家,所以开服人气异常火爆还吸引无数妹子。甚至是出坑后找其他游戏都感觉画面不过关。诛仙,神雕也就几百号的活人了那么区基本全是鬼的。开区那么火爆画面秒杀全部创新飞行系统,为什么都活不过2年。说完美急功近利也不确切,该公司大概就是想前期赚上一笔再开下一个的策略吧。不是每一个游戏都能走细水长流的策略,就一个梦幻还是因为当初的种种因素,放现在开服也得是够呛。神雕楼主玩了2年,花了近一万最后处理了2000,公司光顾着圈钱,到最后可以说是恶意的圈钱了。现在体会到梦幻的好了,也对完美出品的打上了神坑的标签。不敢评价完美的这种经营理念,很多人都说完美必死不过看人家公司不但没死反倒还越开越好。不过楼主是对此深恶痛绝,完美的以后是绝对不可以再碰的。
qq仙灵,一提到总是会有人举起那愤怒的西瓜刀,黑企鹅。楼主玩的不算太少但是相比起其他来说,腾讯坑钱还是坑的有点节操跟技术含量的。第一个回合制网游,中规中矩人气也不错。上来是要花30块钱买个虎娃才能玩,后期随便玩玩这30都能赚回来,如果这也接受不了话我也无话可说。游戏真的不算太黑,多花时间每月赚个话费都是小KISS。很多好友都是白手起家,随便赚钱零花钱。不好的地方是的外 挂太泛滥,某宝随便买点放心用,亲还包邮。这里面的类似梦幻捉鬼的活动基本都挂,一个队伍见不到几个活人,你不用不在乎经验没事,那我用。方便了上班族破坏了性。至于那些会员什么钻的看心态,你花钱就开,不花钱还不让别人开么?最重要的是看官方的动态,这基本属于放羊状态了。一个月没上游戏竟然没有更新,大半年的不出一个资料片。可能是赚钱太少策划什么都撤了,现在就是维护维护开开新区,现在人气也还好也能玩,不过想玩长久的话入坑需谨慎。
桃花源记跟灵域都是同一家公司制作,只不过灵域是由YY经营的。先说桃花源记,被评为一匹黑马原因是陶乐只是一家小公司。小公司有小公司的好,人家用心做不玩作死,所以口碑跟玩家好评还是比较不错的。游戏不错也相对绿色一点。不过也正是因为小公司跟上面几款大公司的比起来总是感觉它的游戏引擎有那么一点点的不足,有点网页游戏的感觉。隔行如隔山楼主也不懂这方面只能说是感觉。不过总体还好也是一款可以玩的游戏。反应最大的就是开新区太多频繁,开新区公司也是为了赚钱再次不多评价,楼主反感的是它的人物设计,不是说人物上半身短下半身长而是上本身小下半身大,跑起来就看到两条大长腿,也是醉了。个人喜欢不同吧。
灵域先前说过是陶乐卖给YY的一款桃花源记,只不过删减了一些东西就成了灵域。有些人说是桃花的阉割版,楼主也不太赞同,各有各的特色,灵域内容没有桃花的多那就显得简洁也更容易上手。YY前期的宣传也很到位主打这款,人气相当的高。上线签到奖励什么也很丰富,也算是比较绿色的游戏。同样缺点,之前就说过桃园相比较其他的引擎就差了一点,灵域的截图师门的还看不出来,一到其他任务就感觉出来,跟网页游戏一样了。总体来说要是能接受的灵域也是一款不错的游戏。
梦幻剑侠同样小公司制作,但却没有被誉为黑马。画面不错也不错,但是没有宣传,真的是全服有多少人数都能数出来。
画江山,内侧的时候玩的,人气还行毕竟才内侧。跟领域差不太多也是比较绿色的,也是上手有种打网页游戏的感觉。
参与战斗,创造一段海洋传奇.回合制游戏无需等待,点击即玩,为正义而战!回合制游戏海量礼包惊喜不断,快来免费领取!
问道,跟梦幻一起出道不过现在的处境比梦幻惨了点,也是经历过时间的考验,游戏本身毋庸置疑。公司也得赚钱这其中也出了无数资料片,10年前的游戏画面放现在也已经跟不上脚步。
好贴。友情帮顶!
几大主流的楼主基本也都介绍过了,其中好处请玩家们自行考虑。回合制游戏也是陪着楼主长大,其中的感情也是难以割舍。楼主也玩过最早的梦幻那个时候没有商城,花钱的也只有修炼虽然楼主很菜但是也乐此不疲。现在如今已经不可能再有这样的游戏了,并且以后几十年也不可能出现。竞争这么激烈,公司也只能把赚钱放在第一位,至于娱乐性游戏性本身也是为了赚钱而服务的。等我大什么时候发展到物质有保障了,游戏公司才能开发出真正的好游戏。码了这么多字也希望能帮到广大吧友。
好帖,赞个
玩勇者斗斗龙吧技能华丽
经典回合 拜托固有回合制只能变武器的玩法
世界boss乐趣无穷想玩
新水浒q传呢。。画面
水浒q传呢?金山倒闭的那款
回合制游戏 寿命最长的只有梦幻西游了。
一起来玩梦幻吧,回合制第一
现在很多页游都做得不错了,虽然有些小坑钱,但是玩着舒服多了
看完了赞一个
桃园是手游吗
神武能交易角色了?
楼主问下 有一款回合制 在上面合宝宝 合成0级的野怪 资质不会降低 是哪款游戏
变得不是,是心态
顶楼主。好东西。不过还是在找新的回合制。。
贴吧热议榜
使用签名档&&
保存至快速回贴

我要回帖

更多关于 希望之地 的文章

 

随机推荐