游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2755|回复: 3

PHP如何实现游戏逻辑脚本

[复制链接]

31

主题

257

帖子

1752

积分

金牌会员

申城谍影

Rank: 6Rank: 6

积分
1752
QQ
发表于 2020-6-26 22:35:14 | 显示全部楼层 |阅读模式
大家好,我最近在构思一个纯文字侦探游戏。打算部署在网页上,或者微信公众号上。属于个人项目,不是商业项目,纯粹是一种情怀。

举个例子:

比如用户输入:走南
游戏反馈:您面前是一条街道,北边是车站,南边是超市,等等等 。

然后用户可以:走南 / 走北
基本上用文字指令推进游戏。

服务端打算用PHP来写。

我不太了解PHP怎样实现游戏逻辑脚本。是否需要嵌入一种脚本语言,比如LUA?

比如游戏中一个动作:进侦探社。
会触发一个游戏脚本:detective_office.script

在这个脚本中可能会有if - else等逻辑分支,还可能call另一个脚本,比如:check_mailbox.script

PHP有个通过字串调用类方法的函数。
如果在不嵌入其他脚本语言的情况下,游戏逻辑脚本是否可以这样实现:

///////////////  detective_office.php

include_once ("check_mailbox.php");

class detectiveOffice
{
    function enter($roleName)
    {
        echo $roleName . "进入了办公室";

        call_user_func_array(array('checkMailbox','check'), array("信箱一"));
    }
}

call_user_func_array(array('detectiveOffice','enter'), array("名侦探"));
///////////////


///////////////  check_mailbox.php

class checkMailbox
{
    function check($mailboxName)
    {
        echo $mailboxName. "被打开了";
    }
}
///////////////


进入侦探社时,用Ajax触发以下脚本:
detective_office.php

游戏中踩地雷触发脚本,应该这样就能基本实现了。
大家觉得怎样?是否可能会有性能问题?一般PHP网页游戏是怎样实现游戏逻辑的?

如果调用python脚本,
比如从detective_office.py中调用check_mailbox.py,
好像也能实现,但是每次调用另一个python脚本,都会启动一个新的python系统进程吧?
会不会对服务器CPU、内存消耗较大?

或者把LUA嵌入PHP更好一点?

或者有其他更方便的游戏脚本语言可以选择,可以嵌入PHP?
其实我需求并不高,主要是希望游戏脚本支持:
1. if - else分支
2. call其他脚本
3. 数学计算
4. call自定义函数

还有个问题,
如果我不用其他脚本语言,只是用上面示例的PHP实现,
像这种调用:
call_user_func_array(array('detectiveOffice','enter'), array("名侦探"));

太繁杂了,有没有办法简化成这样:
enter('detectiveOffice', '名侦探')
同时还要支持if - else分支等功能。

any comments or information is appreciated.


谢谢大家。

31

主题

257

帖子

1752

积分

金牌会员

申城谍影

Rank: 6Rank: 6

积分
1752
QQ
 楼主| 发表于 2020-6-27 02:04:38 | 显示全部楼层
我自己想到一种方案:把一些相关功能定义为一个类,其中的函数都是静态方法。

比如侦探办公室相关功能为类:class detectiveOffice

进入侦探办公室的PHP脚本(detective_office.php)就可以写成:

detectiveOffice::enter('名侦探');
detectiveOffice::checkMailBox('信箱 一');

这样应该能满足基本需求了 。

其实我之前自己用PHP写了一个简单的自定义脚本Compiler,担心不稳定,一直没敢用。
目前先用上述的方法吧。

27

主题

103

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
发表于 2020-7-2 15:26:56 | 显示全部楼层
既然用PHP,就不要想什么LUA了。多此一举。

31

主题

257

帖子

1752

积分

金牌会员

申城谍影

Rank: 6Rank: 6

积分
1752
QQ
 楼主| 发表于 2020-7-2 16:28:28 | 显示全部楼层
zhaoyun004 发表于 2020-7-2 15:26
既然用PHP,就不要想什么LUA了。多此一举。

哈哈,谢谢回复。我这属于C++客户端开发时代后遗症。

不过自定义脚本引擎应该还是有好处的,比如:
1. 一个脚本中call另一个脚本。如果一个PHP文件call另一个PHP文件,可能不太合适。
2. 方便自定义命令、格式、参数
3. 自定义命令不会很多,解析快
4. 脚本名字要存储在地图中,方便调用,等等
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-20 02:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表