摘要: [info:文章出自个人网站 www.wilson-loo.com] 游戏服务器框架与互联网产品的认识 我以前进入要玩,其实很大一部分工作还是在提升c++的编程技能、多进程通信、游戏逻辑 这几方面的学习研究;整个人的视野和思维还定位于程序开发 和 程序设计;说的简单点,就是如何将一个程序代码写好,没 阅读全文
posted @ 2016-06-04 12:52 Wilson-Loo 阅读(510) 评论(0) 推荐(0) 编辑
摘要: [源]关于 boost::asio::io_service::run() 出现【句柄无效】的问题 首先, 我编写了一个网络应用库net.lib,其中有一个单体(其有一成员 boost::asio::io_service),当使用该net.lib时,可直接通过该单体获取 io_service.但是当 阅读全文
posted @ 2015-12-24 01:16 Wilson-Loo 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 最终出错的位置是: #define LUABIND_OPERATOR_ADL_WKND(op) \ inline bool operator op( \ basic_iterator<basic_access> const& x \ , basic_iterator<basic_access> co 阅读全文
posted @ 2015-11-24 00:37 Wilson-Loo 阅读(1026) 评论(0) 推荐(0) 编辑
摘要: (本文来自 http://www.wilson-loo.com/wordpress/archives/140)有一个简单的 table: 编号 类型 详细 创建时间 修改时间 操作 5 TECH 测试内容 2014−01−1016:56:31 −− 修改删除 测试内容 希望通过 javascript 控制 第三 行的 tr 隐显状态:var tr_modifing = document.getElementById( "id_dync" );tr_modifing.style.display = "block";这种将 style.display 设置成 阅读全文
posted @ 2014-01-15 00:41 Wilson-Loo 阅读(6386) 评论(0) 推荐(0) 编辑
摘要: 今天 为 使用 Ogre 开发的游戏前端 添加网络操作, 导入 网络应用库时出现了 类型冲突,网络应用库定义了 UINT:// basetype.h...typedef unsigned int UINT;// ExampleApplication.h...using namespace Ogre;// net.h...UINT port ; //无法决策// main.cpp#include "basetype.h"#include "ExampleApplication.h"#include "net.h"编译时 和 Ogre:: 阅读全文
posted @ 2014-01-08 21:20 Wilson-Loo 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 首先看一段代码:#include #include #include int main(){ struct node { int value; }; struct cmp { bool operator()( const node& a, const node& b ) { return a.value , cmp > pri_queue; node n1 = {22}; node n2 = {11}; node n3 = {33}; node n4 = {11}; pr... 阅读全文
posted @ 2013-10-18 01:20 Wilson-Loo 阅读(1170) 评论(0) 推荐(0) 编辑
摘要: require( "something")或者其他情况出现 Decoding error : Invalid UTF-8.一个解决方案是 尽量使用 utf-8编码:https://love2d.org/forums/viewtopic.php?f=4&t=8760另一个方案, 也是我设置了 utf8 编码后依旧显示 invalid utf-8 问题, 按照 http://love2d.org/forums/viewtopic.php?f=4&t=33279的提法是建议 开启love2d 的 console 查看是否有其他错误 导致出错 , love2D 输出 阅读全文
posted @ 2013-09-08 17:39 Wilson-Loo 阅读(1288) 评论(0) 推荐(0) 编辑
摘要: 在游戏项目开发中, 需要涉及协议的定义及解析, 例如服务端使用c++底层, 前端使用 as进行 flash显示, 前后段数据通信采用 socket, 这就需要协议的定制了. 服务端使用 c++ 做底层网络维护, 搭配 lua 脚本处理逻辑 和 协议解析处理; 使用这种方式的好处时, 指定新协议或修改时, 无需重新编译 C++ 的底层, 只需要修改 lua 脚本, 并重启 服务端程序或 重新加载 lua脚本即可. 唯一的问题时, 当前项目在立项时, 被设计的不友好, 每个模块分配不同同事开发, 每个同事都需要了解协议的格式, 例如"交换背包内两个物品时", lua 这边需要有 阅读全文
posted @ 2013-09-05 00:29 Wilson-Loo 阅读(6090) 评论(0) 推荐(0) 编辑
摘要: 不管是 现在开发中的游戏服务端, 还是近期love2D 开发的前端, 都使用 Lua 做脚本引擎, 需要涉及到 脚本的修改和重启. 第一种方法是 写个封装函数, 里面进行对所有 lua 脚本文件的 require() 操作, 这就要求 :1.对每个支持重新加载的文件进行package.loaded[ filename] = nilrequire( filename)2.文件加载要保持一定的顺序, 以免造成资源的错乱.就当前使用 love2D 前端来看, 其实只有一个 "启动"文件: main.lua, 并在其内进行 各个子功能脚本的 require 加载.如果在 重新加载时 阅读全文
posted @ 2013-09-04 21:22 Wilson-Loo 阅读(17136) 评论(0) 推荐(0) 编辑
摘要: (前置声明: 本随笔图片资源 选自 http://opengameart.org)这边继承上一篇随笔的代码, 修改后效果图将如:较之有以下改动:1.使用简洁的背景图片2.添加了调试文本输出框(下方红色框体)3.添加了角色属性查看蓝(右上方带背景的框体)4.添加带四个方向的2D角色模型5.绘制角色模型的图片sprite边框体5.鼠标控制移动角色模型1.使用简洁的背景图片将 welcome scene 的背景变更为 黑色图片:function WelcomeScene:Initialize() self:SetDesc( "welcome scene") self:SetBac 阅读全文
posted @ 2013-08-29 02:35 Wilson-Loo 阅读(1639) 评论(0) 推荐(0) 编辑
摘要: ...添加 表示背景图片的类:-- Background.luaBackground = {}function Background:new( imgFileName, maxWidth, maxHeight ) local o = {} setmetatable( o, self) self.__index = self if imgFileName then o:SetImage( imgFileName ) end return oendfunction Background:SetImage( imgFileNa... 阅读全文
posted @ 2013-08-27 03:32 Wilson-Loo 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 近期, 由于受前端资源的限制, 原本以服务端C++开发为主的游戏, 无法继续; 再一次, 我决定自己编写前端.此前, 也有过很多次此类想法和做法, 但都失败了, 有 flash, unity3d, cocos 和 directx; 但都因为时间不够, 开发较为繁重, 相继放弃.这次, 我选择了使用 love2D , 理由是轻便, 并且是自己一直使用的 lua进行编写.1.安装love2D. 采用love2D 官网的 0.8版本安装 ; 安装后, 这个程序结构如:其中的 love.exe 即是主程序( lua脚本的 宿主程序, 并且能够处理基本的图形显示, 当让, 还会包含音频, 视频, 其他物 阅读全文
posted @ 2013-08-27 02:14 Wilson-Loo 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 在地图上某块区域,有数个怪物组成的 "哨兵小组",即不会移动, 但拥有警戒视野, 如图1.这5个哨兵是不会移动, 有站立点可确定一个最小外凸包围圈, 如图2;再产生最小矩形包围圈,如图3.typedef struct Position_t{ INT mapid; INT x; INT y;}Position_t, MapPieceBoundInfo_t;typedef UINT ElementType_t;typedef UINT GUID_t;class GamePlayer{public: BOOL IsMoving(); Position_t Ge... 阅读全文
posted @ 2013-08-11 14:46 Wilson-Loo 阅读(903) 评论(0) 推荐(0) 编辑
摘要: 近期定义了一个宏:my_macro.h#define SHOW_INFO_MACRO() do { }while(0)使用时 main.cpp:#include ...#include "my_macro.h"SHOW_INFO_MACRO();int main(){ ... // 省略具体代码 return 0;}编译 main.cpp 会报错:error C2059: 语法错误:“do”error C2143: 语法错误 : 缺少“;”(在“{”的前面)error C2447: “{”: 缺少函数标题(是否是老式的形式表?)error C2059: 语法错误:“whil 阅读全文
posted @ 2013-07-10 17:40 Wilson-Loo 阅读(1252) 评论(0) 推荐(0) 编辑
摘要: 使用 vsnprintf() 获取 formt 后 整个字符串的长度va_list args;len = vsnprintf( null, 0, sFormat, args ); 可以获取 待合并所有 变参后整个最终 sFormat 的字符串长度, 要求 sFormat 里的 %? 标记的个数要和 args 的变参个数 一致, 否则会报错。关于 windows 共享内存 CreateFileMapping 、 OpenFileMapping 、 MapViewOfFile 的错误使用方式有数据结构:struct SMAO_info{ int m_flag; vo... 阅读全文
posted @ 2013-07-06 14:40 Wilson-Loo 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 首先 这两个函数 有这样的对应关系:BOOL WINAPI GetQueuedCompletionStatus( _In_ HANDLE CompletionPort, _Out_ LPDWORD lpNumberOfBytes, _Out_ PULONG_PTR lpCompletionKey, _Out_ LPOVERLAPPED *lpOverlapped, _In_ DWORD dwMilliseconds);BOOL WINAPI PostQueuedCompletionStatus( _In_ HANDLE CompletionPort, _I... 阅读全文
posted @ 2013-07-05 11:32 Wilson-Loo 阅读(4533) 评论(0) 推荐(0) 编辑
摘要: 静态库、预编译头 问题问题描述:先创建了一个静态库, 编码编译完成后, 创建新的测试用项目 main_test,#include “我的库的声明头文件”...#pragma comment( lib, "我的库名.lib");但是编译 main_test 时出现 :错误 42 error LNK2019: 无法解析的外部符号 "public: bool __thiscall _evl::EMinHeap::IsEmpty(void)const " (?IsEmpty@?$EMinHeap@VTimerNode@@@_evl@@QBE_NXZ),该符号在函 阅读全文
posted @ 2013-06-06 22:11 Wilson-Loo 阅读(2074) 评论(0) 推荐(0) 编辑
摘要: error: using typedef-name `T' after `class'templateclass Factory{ friend class T;};class Foo{};int main(){ Factory f; return 0;}按照 http://stackoverflow.com/questions/6321191/using-friend-in-templates提供的解决方案是:使用间接方式:templateclass MakeFriend{public: typedef T Type; };templateclass Factory{... 阅读全文
posted @ 2013-04-15 00:38 Wilson-Loo 阅读(802) 评论(0) 推荐(0) 编辑
摘要: 有个体会, lua table 的 #操作 是针对 table.insert() / table.remove() 这一对操作的 “操作数维护”:每次调用 table.insert() 都会是 #操作值增加(这是我自己的表达, 即使 用 #table 取得表的 返回值);每次调用 table.remove() 都会减少 #操作值。table 内部元素维护 有两种方式:第一种是 使用 table.insert() / table.remove() 这一对第二种是 使用 operator[]另外, 采用默认值声明并定义表, 并且由positive key 时, lua引擎应该会“尝试”自动调用 t 阅读全文
posted @ 2013-03-26 14:11 Wilson-Loo 阅读(27029) 评论(0) 推荐(0) 编辑
摘要: 1.纯净项目2.autoscan 获取简单的 ./configure.in3.在./configure.in 添加 AC_PROG_RANLIB 用以生成静态库4.Makefile.am 内容为:AUTOMAKE_OPTIONS=foreignSUBDIRS=linux event fixobjpool utility databasenoninst_LIBRARIES=libevllib.anoninstdir=/usr/lib/libevllib.aACLOCAL_AMFLAGS=-I m4 #所有 宏添加到 m4 目录libevllib_a_SOURCES=evllib_impl.cpp 阅读全文
posted @ 2013-02-20 19:52 Wilson-Loo 阅读(1820) 评论(0) 推荐(0) 编辑
摘要: evllib.h包含用于各种项目使用 宏 定义, 在windows环境下, 一般位于 vs 安装目录的include 下( 因为作为最基本的开发所需头文件, 甚至用于设计静态库lib), 如:D:\Program Files\Microsoft Visual Studio 10.0\VC\include\evllib.h拷贝批处理在设计编写 静态库FixedObjectPool.lib 时, 同时涉及到 头文件 fixobjpool.h 的修改, 完成修改编译成功后, 需要分别拷贝fixobjpool.h 到D:\Program Files\Microsoft Visual Studio 10 阅读全文
posted @ 2013-01-24 23:16 Wilson-Loo 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 这篇 笔记 是在 上一篇 《键盘控制 显示静态文本【已完成】【附带源码】(只能处理 大写英文字母)》 代码上修改过来的, 其中添加了一些还处于 设计阶段的代码,但不影响本随笔的 主要方向, 设计基于 Dx11 的简单UI, 设计参考自 《DirectX9 User Interface Design and Implementation》。先来张类关系图吧( 不是正规的UML 表示图):新添加 的 UI 子框架 与 原先系统的结合除主要在 SystemClass 的 OnRender() 渲染函数中:void SystemClass::Render(){ if( d3dContext_ =... 阅读全文
posted @ 2013-01-23 23:10 Wilson-Loo 阅读(1874) 评论(0) 推荐(0) 编辑
摘要: ID3DBlob 未声明的标记符 undefined signalID3DBlob 定义在D3DCommon.h 中, 但是 使用 vs2010 & DirectX11 联合开发时, D3DCommon.h 会有两份, 如我的环境是:C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\D3DCommon.hD:\Program Files\Microsoft DirectX SDK (June 2010)\Include\D3Dcommon.h这样, 即使 在项目中有 包含 d3dx11.h (包含 D3DCommon.h) 也不 阅读全文
posted @ 2013-01-20 12:51 Wilson-Loo 阅读(8395) 评论(0) 推荐(1) 编辑
摘要: 注意:(只能处理 大写英文字母)在 《多条文本输出, 每条文本单次 Draw() 最后 Present() 【已完成】【附带源码】》 中完成了显示 简单文本的方式( 但是只限于显示 大写的英文字母)这篇随笔还是改自 那篇文章, 添加了 键盘控制(按 向下方向键 显示 静态文本 ), 这是代码文件结构:下面的是 代码 阅读全文
posted @ 2013-01-13 02:16 Wilson-Loo 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 注意:(只能处理 大写 英文字母)如下图所示 为本程序的类间组织结构:类EvlWin 是 对 windows 窗体创建显示的封装, 使用简易如: // 创建窗体 EvlWin *eWin = new EvlWin( hInstance, prevInstance, cmdLine, cmdShow, NULL, NULL); // 显示窗体 eWin->show();类 Dx11DemoBase 是对 DirectX11 的基本 device / context 创建的封装基类; 但具体效果表现需要由 子类实现: // DirectX11 处理对象 Dx11... 阅读全文
posted @ 2013-01-10 00:56 Wilson-Loo 阅读(344) 评论(0) 推荐(0) 编辑
摘要: Advanced Topics视屏游戏中 文本有很多用途, 一些一再本章中介绍过, 另外一些是我们一定在某些商业游戏中看到过。 文本的其他应用已经超出了本书的内容, 在 www.UltimateGameProgramming.com可以找到如何使用 高级文本效果的 教程, 如果你感兴趣的话, 这些教程将极大地扩展您的初级知识水平, 教程包括:》实现文本框(以及其他的交互元素)》在线游戏 调试控制端》游戏屏幕?》HUD 显示In-Game Text Boxes文本输入框 看起来好像是一个简单的概念, 但实现起来还是需要一定的脑力; 文本输入框不仅是 用来输入文本的图形元素, 还必须在其上面显示文 阅读全文
posted @ 2012-12-10 23:14 Wilson-Loo 阅读(379) 评论(0) 推荐(0) 编辑
摘要: Text 文本好像并不如我们在游戏开发中 想的那么重要, 就像一项不成熟的特性, 并不能该游戏开发带来什么影响。 但事实上果真如此吗?当你完成了一个游戏后, 就会发现文本并不仅仅用在屏幕上显示标题 和 滚动的字幕。 文本在整个游戏场景内是非常有用的: 给玩家提示, 指派游戏目标, 或者显示给玩家背包里里还有多少金币等等。 文本是很重要的UI交互工具, 标示弹药数量, 玩家生命值、防护盾抵抗值、能量剩余等等。在本章我们将涉及如下几个话题: 》为什么在 游戏开发中 文本占据着非常重要的地位 》字体系统是如何工作的 》如何自己亲手创建一个简单的字体系统 》如何在屏幕上那个绘制文本Text i... 阅读全文
posted @ 2012-12-10 23:10 Wilson-Loo 阅读(1309) 评论(0) 推荐(0) 编辑
摘要: 2D 游戏离开了 精灵的话, 就是2D游戏了; 精灵 是在游戏中用2D图形表示 角色或者 物体.你在游戏中遇到的每一棵树, 宝箱, 或者 地域怪物 都是精灵. 精灵, 是在 2D 游戏编程中 被广泛使用 及 易懂的 资源之一. 精灵通常是是 贴图了的矩形和正方形, 大量的精灵 共同创造了虚拟世界.Z-Ordering2D 游戏中, 有些对象在后台运行, 有些则在前端运作, 更有些在 前端 和 后端之间运行, 这些( 能够提供更对象在不同位置运行的 "平台") 叫做层, 可以理解为 一张透明的纸张. 例如, 背景层只能进行渲染 背景精灵, 而动作层 可能包含 全部的角色, 武 阅读全文
posted @ 2012-12-07 03:05 Wilson-Loo 阅读(1489) 评论(0) 推荐(0) 编辑
摘要: 在上个小节中, 我们已经概括了足够的内容, 现在让我们来实现一个纹理映射的实例;同时本章的前半部分涉及过但未讨论完的都将会有所详细讨论.呃. 这个demo 可以在原书上的 Chapter3/TextureMapping 目录找到.我们从修改 TriangleDemo 代码已开始我们的demo设计( 因为大部分代码和 TriangleDemo一样, 这里仅仅是添加了一大块的 sampler相关代码). 在 TextureDemo 类的工作中, 我们将天添加两个新的事物: ID3D11ShaderResourceView colorMap_; // shader resource view 着色器 阅读全文
posted @ 2012-12-04 00:58 Wilson-Loo 阅读(2444) 评论(0) 推荐(1) 编辑
摘要: Texture Mapping正如我们早先提到的, texture 纹理, 是映射在 形状和固体表面的数据; 一般来说, 这些数据是 颜色信息, 通过调用成为 texture mapping 纹理映射的过程, 可以将包含颜色信息的 image 图片 map映射到到 (物体)表面. 除了颜色信息外, texture 数据还可以是 其他类型的数据, 如 用来 法向量映射normal mapping 的 法向量地图( 表面每点的法向量), 用来控制透明度的 alpha数据...Texture 纹理和其他类型的 游戏数据一样, 一半在 runtime 运行时进行加载; 纹理处理 是 Direct3D的 阅读全文
posted @ 2012-12-02 16:16 Wilson-Loo 阅读(3570) 评论(0) 推荐(0) 编辑