基于网络的游戏(例如股票模拟器)的开发始于一个想法。不只是 “我想做一个股市模拟” 但是这个主意 “我想做一个不同的,新的股票市场模拟,这比现有的模拟货币更好,更独特”
然后是研究-看看已经有哪些其他市场模拟产品可以正常工作,并从最终用户的角度看它们如何工作。有使用Java和基于服务器的引擎(如Hollywood Stock Exchange)运行的股票模拟交易,使用SSI和ASP模块运行的模拟交易以及诸如Futures Exchange的开源股票模拟交易。我们研究了所有这些因素,并确定了市场的开放位置和需求的位置。
我们确定在股票市场游戏和模拟电视的预测市场和期货交易所方面存在巨大空白。有很多网站可以为您的节目的受欢迎程度投票,其他网站甚至可以为真人秀节目投票,并通过运气预测下一个节目。但是,没有网站将电视视为股票市场。所以我们决定那将是我们的利基游戏。
电视是一个新兴产业-每年他们销售的电视机数量都比前一年多。电视演播室不知疲倦地工作,制作新的不同节目来播放无线电波和有线网络,仅在北美就使数亿人受益。所有这些观众对自己喜欢和不喜欢的东西都有自己的见解-这是一个与众不同的市场。
我们坐下来,仔细检查了电视股票市场将要做什么的清单。
- 买卖电视节目,电视频道,演播室和明星中的股票
- 卖空并覆盖相同的股票(卖空和补仓与买入或卖出相反,如果您卖空股票,则希望价格下跌,以便在下跌时获利。)
- 对热门电视节目进行评分或投票
- 提供易于使用的无缝注册
- 设计用于极端模块化的市场系统,这样我们就可以在开发新功能时添加新功能而不会干扰市场本身。
那是我们最初的功能列表。在本系列文章的最后,我将显示当前功能的列表,并说明市场系统如何变得越来越复杂,但仍保留我们开发的所有基本模块。
首先,最重要的是建立一种买卖股票的方法,跟踪实际的买卖过程,并授权市场本身在买卖产品时调整价格。
我们决定使用mysql进行数据库编制,并决定实施cron作业来进行后台计算和市场平衡。
通过使用php语言,我们可以更轻松地实现mysql访问,还可以实现更大的灵活性,以保持Stocks Online应用程序尽可能模块化。
MySql和php已在其生命周期中进行了修改,以尽可能接近无缝地一起工作,因此使用这两个组件来构建我们的库存系统是有意义的,因为这将使维护和将来的开发更加容易。
从基本的数学代码开始
买入价=股票价格x(股数+佣金)
我们开发了一个简单的买卖过程,使玩家能够购买或出售股票。系统会自动计算佣金并将其添加到交易中。
我们意识到我们需要限制单个玩家可以购买的股票,因此将每只股票的上限设置为25,000股。这将确保没有人可以垄断股票。并且还限制了单个批量购买或出售的效果。
最初是一个简单的公式和跟踪系统,然后迅速膨胀为一个复杂的数学函数算法,现在看起来像这样:
Number of shares available
= (max shares available - number of shares held by player)
IF
player shares are less than max allowed
THEN
process buy transaction
Buy
current price * number of shares available + commission (1.5%)
Transaction complete - do market calculations
Stock price adjust by (+0.01 x 5,000 shares or fraction thereof)
cron runs, checking transaction and adjusting 0.01 for every 10,000 shares moved
cron also checks if more than 50,000 shares have moved
then stock adjusts slowed to .01 per cron cycle to ensure a run-on stock does not occur.
为了确保这一点正确发生,我们必须为cron和系统添加多个mysql表条目以跟踪库存交易,这样我们不仅可以获得交易和库存变动的历史记录,而且系统还可以交叉检查自身以维护数据损坏或库存交易不佳时保持平衡。
卖出交易几乎是相同的过程,但有负数而不是正数。
我们还实施了投票系统,玩家可以投票选择自己喜欢的电视节目-从而根据自己的投票向上或向下调整该节目库存的价值。如果您喜欢该节目,请投赞成票;如果您不喜欢该节目,请投反对票。我们设置了一个随机数发生器,每次加载投票页面时,都会从数据库中提取10个节目名称,因此没有一个节目比其他任何节目都具有更大的分量。从而确保票数的平均分配。投票系统还通过向玩家的每次点击增加游戏现金来奖励玩家。如果您对所有10个选项进行投票,您将获得1万美元。因此,贪婪成为一个因素-通过投票获得更多收益。
建立玩家投资组合页面仅是建立一个if / then循环以拉动每只持有的股票,并在页面上显示它们的买入价格,当前价格,价差等。
Nest的文章将解释我们如何构建股票行情自动收录器和其他功能,以及“股票在线”应用程序的未来发展方向。