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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介:

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

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

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

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

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

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

      软件开发是一个行业,可是这个行业内不同应用层之间也似乎像是隔山似的,有着不同的开发原则和准绳;我们从一个应用层到另一个应用层,也应该抱着谦卑的姿态,首先做到融入,再熟悉,然后再想着发挥自己的才能才好!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
运维 数据可视化 搜索推荐
低代码平台:10分钟从入门到原理
低代码平台:10分钟从入门到原理
702 0
|
4月前
|
测试技术 开发工具 Android开发
探索移动应用开发之旅:从基础到精通
本文旨在为初学者和有经验的开发者提供一份全面的移动应用开发指南。我们将从移动操作系统的概述开始,深入到移动应用开发的各个方面,包括编程语言、工具选择、设计原则以及测试与部署策略。无论你是刚踏入这一领域的新手,还是希望提升技能的资深开发者,这篇文章都将为你指明方向,助你构建出既美观又实用的移动应用。
|
4月前
|
开发框架 前端开发 JavaScript
移动应用开发的未来之路:探索跨平台框架
【10月更文挑战第42天】在数字时代,移动应用已成为日常生活的一部分。本文将探讨跨平台开发框架,如React Native和Flutter,它们如何改变开发者构建应用的方式。我们将深入了解这些框架的工作原理、优势以及面临的挑战,并展望未来移动应用开发的发展趋势。通过实例分析,我们旨在为读者提供关于选择合适移动应用开发工具的见解,以适应不断变化的技术环境。
|
6月前
|
Java 开发工具 Android开发
移动应用开发之旅:探索移动操作系统与应用构建的奥秘
【8月更文挑战第33天】在数字时代的浪潮中,移动应用已成为我们日常生活的一部分。本文将带您深入理解移动操作系统的工作原理,并揭示如何在这个多姿多彩的平台上开发出引人入胜的应用。我们将从基础概念出发,逐步深入到高级编程技巧,最终通过一个实际的代码示例,展示如何将理论应用于实践。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和灵感。让我们一起踏上这场激动人心的移动应用开发之旅吧!
|
7月前
|
C# 开发者 图形学
Xamarin 竟在游戏开发领域大胆探索,跨平台优势与强大功能结合,开启游戏开发新潮流!
【8月更文挑战第31天】《Xamarin在游戏开发领域的探索》介绍了Xamarin作为跨平台开发框架,在移动游戏开发中的应用。它利用C#语言的优势,提供高效的开发体验,并结合各平台图形库实现高质量画面。本文还展示了Xamarin如何简化游戏逻辑处理、支持多线程编程及与Unity等工具集成,提升游戏质量和开发效率。此外,Xamarin还支持热更新和多平台发布,进一步优化游戏维护流程。
76 0
|
10月前
|
Web App开发 缓存 前端开发
|
10月前
|
数据可视化 开发工具
无代码/低代码开发平台的崛起:从普及到应用
过去几年,无代码/低代码开发平台已经成为了软件开发领域的一个新热点。它们允许非技术人员也能够快速地创建自己的应用程序,大大降低了应用程序开发的门槛。本文将介绍无代码/低代码开发平台的概念和应用,并探讨它们在未来的发展前景。
|
IDE C# 开发工具
游戏开发入门
Unity是一个强大的游戏开发引擎,可以用来制作各种类型的游戏,从简单的2D游戏到复杂的3D游戏,都可以通过使用C#来实现。本篇博客将为你介绍如何使用C#和Unity开发游戏。
|
运维 数据可视化 搜索推荐
程序员的新型开发工具——低代码平台
程序员的新型开发工具——低代码平台
864 0
|
开发者
游戏开发零基础入门教程(2):游戏开发中的一些常用的“行话”
每个领域都有一些属于自己的“行话”,游戏领域也不例外。这些“行话”对于了解游戏开发的人来说是日常用语,但是,对于非游戏行业的人来说其可能完全是不知所云。所以,在此你需要了解一些“行话”的含义,以便于在接下来的内容中,你能够清楚我所表达的是什么。无需担心,我们只是了解几个必要的概念,而且,它们都很容易理解。
148 0