从游戏开发到应用开发的转变

      从2011年大学毕业到2014年年末,这段时间个人软件开发生涯是在游戏圈子里渡过的,虽然终究并无作出什么名堂来,可是至少也是混到了服务器主程的位置;游戏开发的那些日子,大概也是进步最快的日子,回忆起来本身的博客里面比较有质量的文章都是那段时间写的,尤为是面对上线和大并发的时候,对于软件和代码的理解有了不一样于刚毕业那会的理解,我想大概也是项目推进成长吧!php

     时间来到了2014年年末,随着本身对于游戏开发的兴趣骤减和于策划方案冲突的急剧加深,慢慢产生了离开这个行业的想法,因而就在那个契机,本身放下了一切切入到了应用的开发!css

     记得第一个应用是一个手机端的应用,大概是一个相似于微博那样的应用,固然功能要弱化的多;简单被带着入门app端以后,发现服务器端的逻辑彻底没法入手;最后也是在网上抄了一个redis的微博的例子;在这个例子的基础之上开作起来了。那个应用的数据库没有使用mysql,而是直接使用的redis,如今不管如何我也不会这样了吧。没有用mysql也主要是由于本身对于mysql的不熟悉,作游戏的时候对于数据库的使用处于所有nosql或者简单mysql的状态。好比咱们只会设计一个玩家表,可能不少人要说玩家不是不少属性吗?一个表怎么够用,其实咱们是把不少玩家的数据所有封装成json,base64转换,zip压缩,已text形式保存到mysql的表中。这样几乎mysql中两三个表就能保存游戏中全部的数据;但是到了应用层则就不同了,一个微商城都几乎使用近一百个表,还要处理个个表之间的关系,试图等等。html

      作游戏服务器的时候,写逻辑几乎不与数据库打交道,而如今写应用却几乎很难离开数据库。写游戏的时候,好比作一个帮战系统,进入到帮战里面全部的人,都是登陆玩家,玩家数据已经所有加载到内存中,和他交互或者的其余玩家都是这个场景内的其余的玩家,数据也早已经加载到内存中,任何一个打斗,交互,移动等逻辑处理,都是处理内存中数据和逻辑。作应用就不同了,应用中用户之间交互的载体变成了数据库,而再也不是内存,若是用户A想要获得用户B的行为,那么用户B的行为首要要被存储到数据库中。这一点是在从游戏服务器转向webapp的过程当中最痛苦的也是最难理解的,至少我我的是这个状况。记得本身第一个php小应用,把MySQL的链接作成了全局变量;觉得这样每一个链接都能共享;知道后来发生了mysql链接不够用的状况。mysql

      对于游戏来说,数据库只是一个玩家下线暂存玩家数据的地方;也就是说并非重中之重;而对于应用来说则不同了;数据库除了保存着应用全部的数据,还能够用来驱动逻辑,好比触发器,游标,等等。好比排行使用order等。因此这造就了游戏程序员看到一个业务或者模块,首先想到使用怎么样的数据结构。而对于应用程序员看到了一个业务和模块首先想到了是如何设计数据库;我如今看到了不少应用开发者再处理一个逻辑的时候,首先想到的并非从数据结构上作文章;而是首先改变数据表设计。对于游戏程序员来说,彷佛天生的拒绝多哪怕一次的sql操做,能在内存中解决的,不在数据库中作。程序员

      在作游戏开发的时候,是把nosql做为主数据库设计的,在我开发游戏的前两年,都是用mongo做为主要的数据库;可是到了应用上,nosql仍是用来做为一些特定模块的解决方案,或者是为了缓存一些经常使用数据。好比商城系统,对于常常游览的商品,咱们就把它保存到redis中,对于首页,咱们也直接将首页的html+css数据保存到redis中;可是在应用中把nosql做为主数据库,遇到复杂的逻辑,好比商品销量统计或者订单统计之类的需求,用redis就勉为其难了。web

      软件开发是一个行业,但是这个行业内不一样应用层之间也彷佛像是隔山似的,有着不一样的开发原则和准绳;咱们从一个应用层到另外一个应用层,也应该抱着谦卑的姿态,首先作到融入,再熟悉,而后再想着发挥本身的才能才好!redis

相关文章
相关标签/搜索