在.NET中,SQL在游戏开发中有任何作用吗?它被用于什么?

7

我是一个自学初学者,对于计算机/编程的技术规格一无所知。我正在使用一本C#书籍来学习它,主要想学习与游戏开发相关的所有内容,如果某些内容与游戏开发无关或没有用处,我暂时不会去学习它。目前我需要知道的是,在游戏编程中SQL是否有用途?


游戏设计(设计游戏;规则、机制、关卡设计、创意、角色等)和游戏编程(编程部分)之间有很大的区别,或者整个过程被称为“游戏开发”- 开发游戏。已做出相应编辑。 - Ricket
5个回答

5
99%的情况下,不需要使用SQL。SQL用于快速高效地存储和检索大量数据。可以将数据库视为一个文件柜(通常是一个房间里摆满的文件柜),而将SQL视为超级高效的文员!
如果你的游戏需要存储和检索大量数据(例如高度复杂的策略游戏),那么答案可能会改为是,但在需要学习的事物列表上,我会将其放在后面。
如果确实需要从游戏中存储设置等信息,最好的做法是:
- 如果数据量很小,可以将其存储在系统注册表中; - 将其存储在应用程序设置文件中; - 将其存储在游戏可执行文件旁边的文本/二进制文件中。

3
尽管许多游戏都这么做,但是将设置文件与可执行文件存储在同一个文件夹中是不好的做法,并且多年来一直如此。需要更改的内容(例如设置、保存的游戏等)应该放在“应用程序数据”文件夹中,或者可能放在注册表中。 - Michael Madsen
对于那些需要使用 SQL 的时候,SQLite 可能是更好的解决方案。既然我们正在谈论 C#,学习 SQL 可能没有什么用,因为你可以直接在 LINQ 中编写查询语句。 - Travis Gockel
1
此外,@Geno:学习Linq,并且要学好(还有lambda表达式)。它将大大节省开发时间。对于原型设计,您甚至不必费心使用库并进行“正确”的操作,您可以仅使用Linq来完成所有需要排序的内容(例如碰撞检测、敌人查找、空间排序等)。 - Travis Gockel
@CResults - 不确定您所说的“不仅仅是数据存储,而是完整的SQL”是什么意思。 - zebrabox
1
@CResults - 很难一般性地回答这个问题 - 这将取决于游戏标题的要求,但我会说随着现代游戏的复杂性增加,它变得越来越普遍。此外,值得区分运行时和开发工具。运行时可能出于我刚提到的原因使用SQL,尽管在控制台上,这将是嵌入式DB引擎,例如SQLite。开发工具更有可能以某种形式使用SQL进行资产管理、分析、跟踪等。 - zebrabox
显示剩余4条评论

4
也许SQLite是开销最小的选择,但除非你需要索引(快速访问)和大量存储空间,否则自己编写会更好,因为SQL Server本身过于臃肿,并且占用系统资源较多,不适合与游戏同时运行。总的来说,在游戏设计中通常不需要使用SQL(特别是客户端部分)。

+1 因为我相信 SQLite 在游戏开发中有很好的用途。 - Ricket
SQLite真的不需要自己的服务器,对吧?你可以直接将它嵌入到你的应用程序中。 - Stephen Lujan

3

在线游戏几乎总是在后端使用SQL来处理持久世界、玩家账户等数据(虽然有例外情况)。

单人游戏或没有持久世界的游戏几乎普遍不会使用关系型数据库(尽管有例外情况,通常涉及SQLite)。

.NET不太相关,因为只有极少数商业游戏使用.NET。如果你问的是业余制作的游戏,那么很难说人们在家里做了什么。


1

这取决于您计划在用户关闭程序后如何持久化数据。有很多选择,因此SQL可能是处理它的好方法,也可能不是。当然,这是假设您想在游戏玩耍会话之间保存数据。有那么多选择,您可能永远不会使用SQL。
(这是轻描淡写了)。

除了游戏编程外,如果您是开发人员,可能需要了解SQL。我建议学习它。即使您在游戏设计中不使用它,了解概念也会对您有所帮助。


1

大多数游戏都有高性能要求,其中加载时间可预测,并且可以精细地控制何时以及如何加载数据。不幸的是,通用存储引擎(如SQL数据库)无法提供这种功能,因此大多数游戏使用自己的二进制文件存储。

无论如何,如果您想学习编程,最好一开始将注意力集中在一件事情上,所以我的建议是专注于C#,当您感觉至少可以做基本的事情时,可以拓宽您的视野。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接