Jul
19
网页游戏应当如何引人入胜?如何达到超强的用户粘度。

画面吗?
C/S模式的网络游戏可以做那个,但是网页版的游戏如果注重画面,那牺牲的太多太多了。
我却认为,应该在游戏中注入“咖啡因”。上瘾才是王道。
少量付出,大量回报。争抢。PK。偷。
但是目前的网页游戏的副本以及可玩度太小,主线不明确。公司们都在研究着怎样使游戏存活周期加长。
但是,产品周期的长短,在于玩家的认知度。
不然,梦幻西游不可能火爆那么多年了……
画面吗?
C/S模式的网络游戏可以做那个,但是网页版的游戏如果注重画面,那牺牲的太多太多了。
我却认为,应该在游戏中注入“咖啡因”。上瘾才是王道。
少量付出,大量回报。争抢。PK。偷。
但是目前的网页游戏的副本以及可玩度太小,主线不明确。公司们都在研究着怎样使游戏存活周期加长。
但是,产品周期的长短,在于玩家的认知度。
不然,梦幻西游不可能火爆那么多年了……
May
25
今天看到了一个塔防类的flash网页游戏

什么叫只能模仿不被超越,WAR里面的塔防一直影响至今

我觉得我应该也来做个
其实这个东西的技术门槛现在已经不高了
但是需要大量的时间和精力
最近在研究网上商店与娱乐应用的结合
什么叫只能模仿不被超越,WAR里面的塔防一直影响至今
我觉得我应该也来做个
其实这个东西的技术门槛现在已经不高了
但是需要大量的时间和精力
最近在研究网上商店与娱乐应用的结合
Jul
13
Flash在这个时代可以说是最佳的WEB富媒体解决方案
1,表现力极强(当然,那些说flash能做到的js也能做到的人除外,因为这个说法太无知了)
2,跨平台性(没有什么操作平台不支持的,微软的“淫 光”还是需要做出对.net的割舍才行,目前在谷歌浏览器的版本还在公测中,期待)
3,B/S结构下的C/S(好处也有坏处也有,目前天朝的网络环境太落后了,区域性差别过大,在上海随便找个KFC打开笔记本上网的速度都比,白帝城的8M电信都要快,3G就算了,那玩意掉线很令人恼火,而且我还是坐在家里。服务器更新客户端,即可完成更新。一次� 载,以后快速运行。而JS还需要重新对脚本解释。)
4,OOP(flash中的脚本升级到as3.0后带来了OOP,想到什么就能做到什么。起初我已经把大话2逐步搬到了flash。个人的BearBox还在完善中,这是一种游戏编辑器,目前还只有一个地图编辑器)
5,和各种编程语言的紧密结合(dotnet、java、php……几乎主流的都有相应的方法)
6,强大的流媒体服务管理器(FMS、RED5、SFS除FMS等 所不能外其它都还需要自己编写点东西)
用flash编写web网游的好处已经举了些,其实上述内容都是废话
我们将选用flash的框架flex来完成整个游戏的架子,虽然有很多的第三方控件可用,但是目前来说,我不觉得他们好在哪里。
本次就来介绍登录部分的结构
/*-----------------------------------登录界面----------------------------------*/
Login.mxml
/*-----------------------------------代码部分----------------------------------*/
enterState(进入状态)
exitState(退出状态)
EnterGame(进入游戏)
ExitGame(退出游戏)
GameObjectManager.as
/*-----------------------------------代码部分----------------------------------*/
1,表现力极强(当然,那些说flash能做到的js也能做到的人除外,因为这个说法太无知了)
2,跨平台性(没有什么操作平台不支持的,微软的“淫 光”还是需要做出对.net的割舍才行,目前在谷歌浏览器的版本还在公测中,期待)
3,B/S结构下的C/S(好处也有坏处也有,目前天朝的网络环境太落后了,区域性差别过大,在上海随便找个KFC打开笔记本上网的速度都比,白帝城的8M电信都要快,3G就算了,那玩意掉线很令人恼火,而且我还是坐在家里。服务器更新客户端,即可完成更新。一次� 载,以后快速运行。而JS还需要重新对脚本解释。)
4,OOP(flash中的脚本升级到as3.0后带来了OOP,想到什么就能做到什么。起初我已经把大话2逐步搬到了flash。个人的BearBox还在完善中,这是一种游戏编辑器,目前还只有一个地图编辑器)
5,和各种编程语言的紧密结合(dotnet、java、php……几乎主流的都有相应的方法)
6,强大的流媒体服务管理器(FMS、RED5、SFS除FMS等 所不能外其它都还需要自己编写点东西)
用flash编写web网游的好处已经举了些,其实上述内容都是废话
我们将选用flash的框架flex来完成整个游戏的架子,虽然有很多的第三方控件可用,但是目前来说,我不觉得他们好在哪里。
本次就来介绍登录部分的结构
/*-----------------------------------登录界面----------------------------------*/
Login.mxml
/*-----------------------------------代码部分----------------------------------*/
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="400" frameRate="100" creationComplete="creationComplete()" enterFrame="enterFrame(event)" currentState="MainMenu">
<mx:states>
<mx:State
name="Game"
enterState="enterGame(event)"
exitState="exitGame(event)">
</mx:State>
<mx:State name="MainMenu">
<mx:AddChild relativeTo="{myCanvas}" position="lastChild">
<mx:Button x="525" y="368" label="Start" id="btn Start" click="startGameClicked(event)"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Canvas x="0" y="0" width="100%" height="100%" id="myCanvas"/>
<mx:Script>
<![CDATA[
protected var inGame:Boolean = false;
public function creationComplete():void
{
}
public function enterFrame(event:Event):void
{
if(inGame)
{
GameObjectManager.Instance.enterFrame();
myCanvas.graphics.clear();
myCanvas.graphics.beginBitmapFill(GameObjectManager.Instance.backBuffer,null,false,false);
myCanvas.graphics.drawRect(0,0,this.width,this.height);
myCanvas.graphics.endFill();
}
}
protected function startGameClicked(event.Event):void
{
currentState="Game"
}
protected function enterGame(event:Event):void
{
GameObjectManager.Instance.startup();
inGame=true;
}
protected function exitGame(event:Event):void
{
inGame=false;
}
]]>
</mx:Script>
</mx:Application>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="400" frameRate="100" creationComplete="creationComplete()" enterFrame="enterFrame(event)" currentState="MainMenu">
<mx:states>
<mx:State
name="Game"
enterState="enterGame(event)"
exitState="exitGame(event)">
</mx:State>
<mx:State name="MainMenu">
<mx:AddChild relativeTo="{myCanvas}" position="lastChild">
<mx:Button x="525" y="368" label="Start" id="btn Start" click="startGameClicked(event)"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Canvas x="0" y="0" width="100%" height="100%" id="myCanvas"/>
<mx:Script>
<![CDATA[
protected var inGame:Boolean = false;
public function creationComplete():void
{
}
public function enterFrame(event:Event):void
{
if(inGame)
{
GameObjectManager.Instance.enterFrame();
myCanvas.graphics.clear();
myCanvas.graphics.beginBitmapFill(GameObjectManager.Instance.backBuffer,null,false,false);
myCanvas.graphics.drawRect(0,0,this.width,this.height);
myCanvas.graphics.endFill();
}
}
protected function startGameClicked(event.Event):void
{
currentState="Game"
}
protected function enterGame(event:Event):void
{
GameObjectManager.Instance.startup();
inGame=true;
}
protected function exitGame(event:Event):void
{
inGame=false;
}
]]>
</mx:Script>
</mx:Application>
enterState(进入状态)
exitState(退出状态)
EnterGame(进入游戏)
ExitGame(退出游戏)
GameObjectManager.as
/*-----------------------------------代码部分----------------------------------*/
Package
{
import mx.core.*;
import mx.collections.*;
import flash.display.*;
public class GameObjectManager
{
public var backBuffer:BitmapData;
public var clearColor:uint=0xFF0043AB;
protected statci var instance:GameObjectManager = null;
protected var lastFrame:Date;
static public function get Instance():GameObjectManager
{
if(instacne == null)
instance = new GameObjectManager();
return instance;
}
public function GameObjectManager()
{
if(instance != null)
throw new Error("Only one Singleton instance should be instantiated");
backBuffer = new BitmapData(Application.application.width,Application.application.height,false);
}
public function startup():void
{
lastFrame = new Data();
}
public function shutdown():void
{
}
public function enterFrame():void
{
var thisFrame:Date=new Date();
var seconds:Number=(thisFrame.getTime()-lastFrame.getTime())/1000.0;
lastFrame = thisFrame;
drawObjects();
}
protected function drawObjects():void
{
backBuffer.fillRect(backBuffer.rect,clearColor);
}
}
}
{
import mx.core.*;
import mx.collections.*;
import flash.display.*;
public class GameObjectManager
{
public var backBuffer:BitmapData;
public var clearColor:uint=0xFF0043AB;
protected statci var instance:GameObjectManager = null;
protected var lastFrame:Date;
static public function get Instance():GameObjectManager
{
if(instacne == null)
instance = new GameObjectManager();
return instance;
}
public function GameObjectManager()
{
if(instance != null)
throw new Error("Only one Singleton instance should be instantiated");
backBuffer = new BitmapData(Application.application.width,Application.application.height,false);
}
public function startup():void
{
lastFrame = new Data();
}
public function shutdown():void
{
}
public function enterFrame():void
{
var thisFrame:Date=new Date();
var seconds:Number=(thisFrame.getTime()-lastFrame.getTime())/1000.0;
lastFrame = thisFrame;
drawObjects();
}
protected function drawObjects():void
{
backBuffer.fillRect(backBuffer.rect,clearColor);
}
}
}
Feb
6
Flash Player文件设游戏地图坐 为(x,y),屏幕坐 为(x’, y’),换算方法如下:
x’= (x+y)
y’= (x-y)
x = (x’+y’)/2
y = (x’-y’)/2




