V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vChrysanthemum
V2EX  ›  游戏

开放一个铺灰尘的半成终端下网游, traveller

  •  
  •   vChrysanthemum · 2015-03-26 12:36:35 +08:00 · 3992 次点击
    这是一个创建于 3555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前感兴趣写个终端下的网游,但是后来事情越来越多...so sad...,发现上次更新差不多是一个月前了。所以开放出来,有感兴趣的么?

    这里大致介绍一下:

    1. 背景介绍:
      地球灾难,世界末日,玩家控制一名角色逃出地球,离开地球后,移民其他星球;星球与星球之间可以互相移民,只要星球之间互相承认,并能兑换货币即可。

    2. 主要游戏特点:
      2-1. 终端下,暂时只支持linux、mac(我是在mac底下开发的)
      2-2. 玩家可以通过编程,自己实现一个星球,然后和其他星球互相承认、互相移民

    3. 技术概要:
      关键词:c lua sqlite ncurses redis

    3-1. 星球编写:用 lua 编写星球相关逻辑

    3-2. 网络:
    3-2-1. 我把redis的事件处理(主要兼容os部分)拿来用,并参考通信协议重新实现了一次
    3-2-2. 客户端、服务端同时并存

    3-3. 线程:运行后分两个线程,一个处理网络和事件,一个处理UI

    1. 安装与运行:
      4-1. 首先要安装 libcurses,我安装到了 /usr/local/lib/libncurses.a,所以src/Makefile,里根据你安装的位置重新设置一下
      4-2. 进入 deps/lua ,然后 make macosx (根据你的操作系统make,譬如linux等)
      4-3. 进入 planet/earth/server 然后按照install.sql 生成sqlite数据库文件sqlite.db
      4-4. 进入 src/ ,然后make
      4-5. 进入 src/ ,运行 ./traveller ../conf/earth.conf ,这样就运行了,自己连自己,也就是说,自己开了一个地球server,然后客户端连接这个server,你会看到一个地图(~~~很挫。。。别打脸。。。),自适应屏幕的

    2. 开发进度:
      ui只做了个自适应屏幕的地图展示,vim的上下左右控制光标,在地图里跑来跑去
      打开 redis 客户端 ./redis-cli -p 1092 ,
      然后运行planet PUBCitizenLogin [email protected] traveller ,你会发现返回登录成功,
      如果你运行 planet PUBCitizenLogin [email protected] 123 ,你会得到 (error) 用户名或密码错误
      这个例子展示了,从redis客户端发出请求,server接受请求,并交给lua脚本处理,lua调用数据库,并向redis客户端推送消息。
      终上所述,要完成还前路漫漫。。。

    3. TODO:
      我之前的想法是,做一个自由世界,然后收集一些有意思的星球,终端下的模拟人生。。。。不过。。。你懂得。。。。扯倒蛋了。。。。
      因为感觉前路漫漫,所以想试试开放出来,看看能不能产生有意思的事情。。。

    https://github.com/vChrysanthemum/traveller

    以上。。。。轻拍

    16 条回复    2015-03-26 16:26:36 +08:00
    jasonding
        1
    jasonding  
       2015-03-26 12:49:57 +08:00
    windows忠实用户表示心有余而力不足
    vChrysanthemum
        2
    vChrysanthemum  
    OP
       2015-03-26 12:53:10 +08:00
    @jasonding 貌似用windows挺多的。。。。。。表示硬盘不足装不起windows,所没兼容windows。。。。 。。orz
    jasonding
        3
    jasonding  
       2015-03-26 12:59:26 +08:00
    @vChrysanthemum windows入门简单啊,linux入门相对难度高、mac则是经济要求相对较高,你可以考虑搞搞windows的
    vChrysanthemum
        4
    vChrysanthemum  
    OP
       2015-03-26 13:09:49 +08:00
    @jasonding 恩恩,微软大法好(winxp和win7),visual studio下写代码很享受啊。

    以后有机会的。。。。不过目前来看,要是有时间还是想先把mac/linux下ui部分再继续完善。。毕竟目前来看,似乎如果没有能够完整能玩的例子,很难有吸引力
    a1058021348
        5
    a1058021348  
       2015-03-26 13:35:15 +08:00   ❤️ 1
    建议添加游戏界面啊等等的演示图...
    jamesxu
        6
    jamesxu  
       2015-03-26 13:38:18 +08:00 via iPhone
    好歹截个图啊
    vChrysanthemum
        7
    vChrysanthemum  
    OP
       2015-03-26 13:39:26 +08:00
    好的~~~截下图
    vChrysanthemum
        8
    vChrysanthemum  
    OP
       2015-03-26 13:54:14 +08:00
    感觉截个图会吓退一批人。。。。。orz。。。。

    很粗糙,很原始

    上图了。。。轻拍哈~~~

    首先,是很久前截的图,本来是想宣传用的:
    http://imgur.com/28hDoAO


    那么开始啦,
    首先运行一下 ./traveller,你会看到以下界面:


    是的,会提醒你输入配置文件地址,编辑配置文件,你可以连接不同的星球,或者选择你自己编写的星球放在哪个位置,那么选择地球,
    ./traveller ../conf/earth.conf,你会看到



    然后用 hjkl ,vim的操作方式来操作光标, 又例如 32j 表示向下移动32行,


    是的地图是自适应屏幕的,然后地图上面那些符号是什么东西呢?

    打开这个文件:planet/earth/client/arctic.map.json(ps:这个json正确应该是放在数据库里,然后客户端去请求服务端获取的),这个用来生成地图,nodes数组里面放坐标和资源id



    然后,我之前开发用这个来做测试:

    是的,redis-cli
    vChrysanthemum
        9
    vChrysanthemum  
    OP
       2015-03-26 13:54:38 +08:00
    ligyxy
        10
    ligyxy  
       2015-03-26 13:57:31 +08:00   ❤️ 1
    这风格很棒的啊,想起这个了 https://www.v2ex.com/t/164680
    vChrysanthemum
        11
    vChrysanthemum  
    OP
       2015-03-26 13:59:13 +08:00
    @ligyxy 所以说看TODO,之前野心勃勃想做个终端下模拟人生,可以去各种星球玩耍
    zachgenius
        12
    zachgenius  
       2015-03-26 14:39:28 +08:00   ❤️ 1
    感觉想法略屌。。。
    lxrabbit
        13
    lxrabbit  
       2015-03-26 15:22:42 +08:00
    LZ开的坑略大,上来就是沙盒游戏(我觉得小公司都有点困难),而且,没有WIN什么的,估计受众面会很小吧
    lxrabbit
        14
    lxrabbit  
       2015-03-26 15:24:43 +08:00
    我错了,这只是个只有文字的游戏啊....
    bububut
        15
    bububut  
       2015-03-26 16:09:25 +08:00
    roguelike风格,我喜欢
    但这玩法是去各个星球冒险的,还是星球大亨搞模拟经营的?
    vChrysanthemum
        16
    vChrysanthemum  
    OP
       2015-03-26 16:26:36 +08:00
    @bububut 对于普通玩家来说是冒险,对于通过编程开发星球的人来说(使用lua脚本编程,github中提供地球的例子)算是模拟经营吧
    就像 @lxrabbit 说的,其实即使是只有文字的游戏,坑也略大啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:14 · PVG 22:14 · LAX 06:14 · JFK 09:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.