V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
magine
V2EX  ›  Python

老司机带带我,大三上学期刚结束,想用 Python 写一个 Minecraft 的开服器...

  •  1
     
  •   magine ·
    Ma233 · 2015-01-10 23:18:46 +08:00 · 6207 次点击
    这是一个创建于 3612 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大三上学期刚结束,有一个梦想,希望得到指导——我想自己做一个Minecraft的开服器。

    Minecraft是我最喜欢的游戏之一,所以我想自己做一个开源的开服器!

    目前的状况是Java只会学校教的一点点点点点点皮毛,Python略熟。

    初步打算用Python实现,以后如果有必要可能会用golang重写。

    求各位老司机赐我指导:
    1. 想法是否可行?(盗版?难以实现?)
    2. 一个开服器都做了些什么?(或者请告诉我如何知道他做了什么)
    3. 本人已修计算机网络,会用Python写Socket编程,写过并且部署过网站,那么我还需要掌握哪些技术?
    4. 是否有已经实现的模板?

    第 1 条附言  ·  2015-01-11 10:51:04 +08:00
    首先非常感谢各位老司机热情的回复以及广告=w=
    然后,我想可能我的想法还不够明确,其实我想做的应该是一个服务器:
    我想写一个应用来代替Minecraft自带的对网络开放功能。
    不过看来我先要研究一下开服器的工作原理。
    35 条回复    2015-01-14 22:58:08 +08:00
    omi4399
        1
    omi4399  
       2015-01-10 23:22:41 +08:00
    帮忙艾特老司机
    @icedx
    @Love4Taylor
    magine
        2
    magine  
    OP
       2015-01-10 23:27:23 +08:00
    @omi4399
    说到老司机 @lepture @cee @binux
    VicYu
        3
    VicYu  
       2015-01-10 23:36:49 +08:00   ❤️ 1
    java -jar minecraft.jar
    emric
        4
    emric  
       2015-01-10 23:37:03 +08:00   ❤️ 1
    1. 可以.
    2. 写配置文件, 调用命令.
    3. 不需要, 开服器只是命令行的 GUI .
    4. bukkit 上似乎有开源实现.
    icedx
        5
    icedx  
       2015-01-11 00:11:25 +08:00   ❤️ 1
    1. 可行
    2. 一个开服器都做了些什么?(或者请告诉我如何知道他做了什么)
    3. 不需要了
    4. 有啊 遍地都是
    Artotria
        6
    Artotria  
       2015-01-11 00:27:29 +08:00
    老司机啊,→ → @wtbhk
    typcn
        7
    typcn  
       2015-01-11 00:32:22 +08:00   ❤️ 1
    一个开服器 要做的是 执行一条命令。

    java -Xmx最大内存大小 -jar 文件名

    如果要 GUI 一键操作那种的话,重定向 stdin & stdout,按下相应按钮向 stdin 发送相应内容。
    不过我觉得,这个没啥意义,谁的服务器会装图形界面 ......

    开服器/启动器 都是没啥技术含量的东西

    我初中的时候就开了个 MC 服 开到现在了,硬广告 ===》 mc.eqoe.cn
    locatino
        8
    locatino  
       2015-01-11 00:32:45 +08:00   ❤️ 1
    很简单的 一个脚本搞定
    1.首先检测java环境,没有就安装
    2.下载mc(定制seed,op,whitelist,jam等参数,可选)
    3.启动mc程序
    railgun
        9
    railgun  
       2015-01-11 00:38:08 +08:00   ❤️ 1
    你要先会手工把服务器跑起来,然后把中间的一步步都用Python实现一遍,完成
    oott123
        10
    oott123  
       2015-01-11 01:04:42 +08:00 via Android
    @typcn 可以考虑把 GUI 做到网页上。

    楼主可以考虑实现一个类似 McMyadmin 这样的东西~
    typcn
        11
    typcn  
       2015-01-11 01:18:59 +08:00   ❤️ 2
    @oott123 网页的话,SpaceCraft 开源免费,不过搭建起来有点折腾。

    服务器连个 SSH 管理 就几条命令的事,还比网页省流量,不如把用户的面板做到网页上(因为这个学会了 java 写 Spigot/Bukkit 插件)。
    我的服务器现在用户系统就跟我的网站是集成的,MC 里的钱跟网站积分也是同步的。
    正在做:
    网页商城,可以在网页上买游戏里的物品。 网页领取任务,插件在游戏中加监听器,完成任务之后领奖品,全套做好之后去宣传,抽奖送一台水果。
    Saber
        12
    Saber  
       2015-01-11 01:47:52 +08:00
    @typcn 这个好屌.
    otmb
        13
    otmb  
       2015-01-11 01:59:31 +08:00
    Minecraft 是收费游戏?
    TF
        14
    TF  
       2015-01-11 02:04:43 +08:00
    @typcn 加入無門
    RIcter
        15
    RIcter  
       2015-01-11 02:08:04 +08:00 via iPad
    看成用 Python 写一个 Minecraft 服务端…
    fu82581983
        16
    fu82581983  
       2015-01-11 02:17:58 +08:00 via iPhone
    @RIcter 同看成写服务端 想到楼主甚叼 进来看看
    binux
        17
    binux  
       2015-01-11 02:20:08 +08:00
    开服器是什么东西?
    typcn
        18
    typcn  
       2015-01-11 02:43:20 +08:00   ❤️ 1
    @TF 点那个链接没有反应的话手动加吧
    typcn
        19
    typcn  
       2015-01-11 02:48:40 +08:00   ❤️ 1
    @TF 已经修改,加群链接弄成 target="_blank",然后原来的按钮自动显示群号
    Cee
        20
    Cee  
       2015-01-11 09:07:44 +08:00
    老司机 @RIcter
    RIcter
        21
    RIcter  
       2015-01-11 09:24:47 +08:00 via iPad
    @Cee 我又以为elvba@我…
    大菊苣Cee
    Cee
        22
    Cee  
       2015-01-11 09:30:44 +08:00
    @RIcter 我觉得我不是老司机 我是老死机
    rwzsycwan
        23
    rwzsycwan  
       2015-01-11 10:41:22 +08:00
    @typcn 额 minecraft官方客户端不能登陆??
    magine
        24
    magine  
    OP
       2015-01-11 10:47:51 +08:00
    @Cee
    我想要cee的本子 QAQ
    magine
        25
    magine  
    OP
       2015-01-11 10:52:27 +08:00
    @binux
    类似于 buckit 那样的东西 =w=
    magine
        26
    magine  
    OP
       2015-01-11 10:54:17 +08:00
    @binux
    是 bukkit ... 手残了。 但是暂时还不了解Bukkit接管到哪一层,接下来会研究的。QAQ
    magine
        27
    magine  
    OP
       2015-01-11 10:59:25 +08:00
    @RIcter
    @fu82581983
    没错我就是想写服务端!!!
    目前计划投入时间是一年半的业余时间。
    luoqeng
        28
    luoqeng  
       2015-01-11 11:06:46 +08:00   ❤️ 1
    emric
        29
    emric  
       2015-01-11 11:53:36 +08:00   ❤️ 1
    稍微了解一些, 我也来讲一下.

    如果想写出和 bukkit 一样的服务端, 是很困难的.
    会遇到游戏协议/生成算法/游戏实现等等, 如果想要开源还需要用净室去做, 也很难去达到原版的娱乐性.

    如果你对这个很有兴趣, 或许你可以和我一起去完善 MCServer 这个项目 : P

    ---

    如果你想去实现类似一个 MCBBS 的开服器, Spigot 的 Wiki [1] 可能帮得到你.

    题外话: 因为最近 bukkit 遇到了一些版权危机, 所以几乎所有 MC 服务端分支都是在放弃维护的状态.
    除开 Spigot 还有 Sponge 前者巧妙的避开了版权, 后者选择重新去开发API.

    1. www.spigotmc.org/wiki/index
    typcn
        30
    typcn  
       2015-01-11 15:55:15 +08:00
    @rwzsycwan 先打开我的登陆器,用相同用户名登陆到主菜单(显示在线列表的界面)然后点击隐藏,就可以使用官方客户端登陆了
    GPU
        31
    GPU  
       2015-01-11 16:31:30 +08:00 via iPhone
    什么叫开服务器,我以为打小一个字了
    rwzsycwan
        32
    rwzsycwan  
       2015-01-11 18:50:40 +08:00
    @typcn 好的 谢了
    vboar
        33
    vboar  
       2015-01-11 22:52:31 +08:00 via Android
    @Cee Cee妹~
    oott123
        34
    oott123  
       2015-01-12 00:49:30 +08:00 via Android
    写服务端…
    这工程量听起来就很壮观…
    楼主好运,加油!
    lanyimo
        35
    lanyimo  
       2015-01-14 22:58:08 +08:00
    新手Python,想找个师傅教教我啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2611 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.