<commit_before>---
layout: post
title: 从零制作一款RPG游戏 第零章 准备
category: RPG
tags: Java, Game, RPG
keywords: Java, Game, RPG
description: 从零制作一款RPG游戏 第零章
---

欢迎来到我的博客，这是我博客上的第一篇文章，望大家多多支持。

## 前言
你是否曾想过要做出一款RPG游戏呢？相信你来到这里，定是已经作好了充足的准备迎接你的最终成功了吧。

在开始阅读之前，有几件事需要你注意：

+ 是有专门用来制作RPG游戏的软件的，比如RPG Maker，这类软件既降低了门槛，又方便了制作。如果没有特殊需要，建议使用这类软件，本教程不讨论这类软件的用法。  
+ 本教程使用Java语言进行编写，别的语言的朋友学习方法就好，不要抄代码。  
+ 这并不是一篇零基础教程，你需要学会至少一门编程语言才能阅读本文。  
+ 本文中的RPG使用千里冰封的Frice Engine作为图形引擎，在不使用引擎的情况下，读者需要自己来写图形方面的内容（主要是因为我不会写图形233）。  
+ 一个好的游戏编程是基础，美工、音乐、设定是精华，本文不讨论后三者，读者应自行准备。  
+ 本文的所有代码都不是唯一写法，也不一定是最好写法，读者应再本文的基础上再做创新。

## 你需要准备什么？  
除了上述注意事项，读者需准备下列东西：  

+ 编程基础。
+ 我强烈建议使用IDE进行编程，如果你用的是Java语言，推荐Intellij IDEA。  
+ 一个制作团队，一个好的RPG仅由一人完成几乎不可能，如果你有足够的精力清忽略这条。  

## 你需要做什么？
一个游戏的出现免不了这些过程：

1. 灵感的产生
2. 游戏制作的规划
3. 筹资（可选）
4. 游戏本体程序的编写
5. 人物立绘和贴图的绘制
6. 作曲和编曲
7. 剧情的设计
8. 发布
9. 解决玩家的疑惑

同人游戏开发者请忽略第一条和下面这段话。

如果你突发奇想想做一个游戏，第一个步骤你应该已经完成了，那就是为你的游戏设计设定，一个好的设定是一个好游戏的关键。即使设定不能卖钱，不存在具体意义上的版权（否则同人作品不都算侵权？），但是，本人认为， @ 一个游戏的所有音乐，美术，程序，都是在为设定，在为剧情做一个载体，都是在为设定服务，都是一个完整设定的首次体现。一个游戏设定的华丽，完全可以掩盖音乐，美术和程序上的不足，一个游戏的设定是这个游戏最主要的部分，没有之一。 @ 因此，请你 @ 以一个为设定制作游戏的心态制作游戏，而非为游戏设计设定，除非你是靠开发游戏赚钱的人。 @ ，同时，我 @ 强烈建议先设计设定，再考虑游戏制作。 @ 

有的人可能回温了，既然第一条是设计设定和剧情，你丫第七条是啥？这里说明一下，第一条是完全的设计设定，在心中创造想法，构建你的世界观，人设和事迹。而第七条，是指通过编程体现出你的设定，可能又有人问了，那第四条就不是通过编程体现设定咯？这里你就要注意了，第四条是说，写出游戏主要代码，实现游戏系统，与设定没有半毛钱关系。你可能会问，不编程难道能实现剧情？固然不编程不能实现剧情，但是具体方法与写游戏系统不同，要知道你用的是面向对象语言（当然如果你用面向过程语言写游戏我把你敬佩完了以后也不得不告诉你把剧情写在代码里是唯一途径），剧情与剧情之间存在着共性，我们当然可以把剧情写成一个个对象，再序列化在文件里，我们的代码就会变得简洁明了， @ 写游戏的代码部分本质上就是为游戏写一个具体的游戏引擎。 @ 

规划游戏制作过程是什么，哦其实就是你现在在做的，但不是全部，你还需要召集伙伴，把你大胆的想法告诉你的朋友，让他们加入制作。

本教程的初衷是教会每一个读这篇教程的人制作一个完整的发布出去能轰动一时的游戏而不是demo，这篇文章不一定讲得很好，但不幸的是如果网上还有其它任何一篇教你真正的制作大作的教程的话，这篇文章就不会诞生了，网上那些rpg游戏制作教程，多半就只是在强调实现，游戏教程甚至使用 `int[]` 储存地图数据，这些教程只能实现一个简单的游戏让你拿出去装B，真正开发游戏的时候，你说你敢用 `int[]`这种费内存的东西储存那么大的地图吗？要知道本文第一章的储存方式相比使用 `int[]` 的方式整整节省了31/32的内存。

至此，我们已经有了足够的条件制作一个RPG游戏，从下一章开始，我们会介绍制作一个RPG游戏的具体步骤。  

<commit_msg>updata<commit_after>---
layout: post
title: 从零制作一款RPG游戏 第零章 准备
category: RPG
tags: Java, Game, RPG
keywords: Java, Game, RPG
description: 从零制作一款RPG游戏 第零章
---

欢迎来到我的博客，这是我博客上的第一篇文章，望大家多多支持。

## 前言
你是否曾想过要做出一款RPG游戏呢？相信你来到这里，定是已经作好了充足的准备迎接你的最终成功了吧。

在开始阅读之前，有几件事需要你注意：

+ 是有专门用来制作RPG游戏的软件的，比如RPG Maker，这类软件既降低了门槛，又方便了制作。如果没有特殊需要，建议使用这类软件，本教程不讨论这类软件的用法。  
+ 本教程使用Java语言进行编写，别的语言的朋友学习方法就好，不要抄代码。  
+ 这并不是一篇零基础教程，你需要学会至少一门编程语言才能阅读本文。  
+ 本文中的RPG使用千里冰封的Frice Engine作为图形引擎，在不使用引擎的情况下，读者需要自己来写图形方面的内容（主要是因为我不会写图形233）。  
+ 一个好的游戏编程是基础，美工、音乐、设定是精华，本文不讨论后三者，读者应自行准备。  
+ 本文的所有代码都不是唯一写法，也不一定是最好写法，读者应再本文的基础上再做创新。

## 你需要准备什么？  
除了上述注意事项，读者需准备下列东西：  

+ 编程基础。
+ 我强烈建议使用IDE进行编程，如果你用的是Java语言，推荐Intellij IDEA。  
+ 一个制作团队，一个好的RPG仅由一人完成几乎不可能，如果你有足够的精力清忽略这条。  

## 你需要做什么？
一个游戏的出现免不了这些过程：

1. 灵感的产生
2. 游戏制作的规划
3. 筹资（可选）
4. 游戏本体程序的编写
5. 人物立绘和贴图的绘制
6. 作曲和编曲
7. 剧情的设计
8. 发布
9. 解决玩家的疑惑

同人游戏开发者请忽略第一条和下面这段话。

如果你突发奇想想做一个游戏，第一个步骤你应该已经完成了，那就是为你的游戏设计设定，一个好的设定是一个好游戏的关键。即使设定不能卖钱，不存在具体意义上的版权（否则同人作品不都算侵权？），但是，本人认为， ** 一个游戏的所有音乐，美术，程序，都是在为设定，在为剧情做一个载体，都是在为设定服务，都是一个完整设定的首次体现。一个游戏设定的华丽，完全可以掩盖音乐，美术和程序上的不足，一个游戏的设定是这个游戏最主要的部分，没有之一。 ** 因此，请你 ** 以一个为设定制作游戏的心态制作游戏，而非为游戏设计设定，除非你是靠开发游戏赚钱的人。 ** ，同时，我 ** 强烈建议先设计设定，再考虑游戏制作。 ** 

有的人可能回温了，既然第一条是设计设定和剧情，你丫第七条是啥？这里说明一下，第一条是完全的设计设定，在心中创造想法，构建你的世界观，人设和事迹。而第七条，是指通过编程体现出你的设定，可能又有人问了，那第四条就不是通过编程体现设定咯？这里你就要注意了，第四条是说，写出游戏主要代码，实现游戏系统，与设定没有半毛钱关系。你可能会问，不编程难道能实现剧情？固然不编程不能实现剧情，但是具体方法与写游戏系统不同，要知道你用的是面向对象语言（当然如果你用面向过程语言写游戏我把你敬佩完了以后也不得不告诉你把剧情写在代码里是唯一途径），剧情与剧情之间存在着共性，我们当然可以把剧情写成一个个对象，再序列化在文件里，我们的代码就会变得简洁明了， ** 写游戏的代码部分本质上就是为游戏写一个具体的游戏引擎。 ** 

规划游戏制作过程是什么，哦其实就是你现在在做的，但不是全部，你还需要召集伙伴，把你大胆的想法告诉你的朋友，让他们加入制作。

本教程的初衷是教会每一个读这篇教程的人制作一个完整的发布出去能轰动一时的游戏而不是demo，这篇文章不一定讲得很好，但不幸的是如果网上还有其它任何一篇教你真正的制作大作的教程的话，这篇文章就不会诞生了，网上那些rpg游戏制作教程，多半就只是在强调实现，游戏教程甚至使用 `int[]` 储存地图数据，这些教程只能实现一个简单的游戏让你拿出去装B，真正开发游戏的时候，你说你敢用 `int[]`这种费内存的东西储存那么大的地图吗？要知道本文第一章的储存方式相比使用 `int[]` 的方式整整节省了31/32的内存。

至此，我们已经有了足够的条件制作一个RPG游戏，从下一章开始，我们会介绍制作一个RPG游戏的具体步骤。  


{'fraction_non_alphanumeric': 0.10315186246418338, 'fraction_numerical': 0.008335504037509768, 'mean_word_length': 11.842809364548495, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7432657', 'n_tokens_mistral': 3690, 'n_tokens_neox': 4246, 'n_words': 150}