如何在不到一天的时间内启动你的副项目
流程概述
我遵循的流程涵盖了软件
开发的许多标准支柱,这些支柱在瀑布式方法和敏捷方法中都有体现。我遵循的流程的基本概要如下:
- 计划
- 缩小范围
- 设计
- 建造
- 发射
- 审查
我将以我的最新项目多人刽子手游戏为例,逐步向您介绍这个过程。
规划
主意
我最近这个项目的灵感源于我和家人在一个叫allbad.cards的网站上玩《Cards Against Humanity》。这个网站允许多人使用不同的设备,随时随地一起玩这个热门游戏。我对学习网络应用中实时通信的工作原理很感兴趣,想开发一个能帮助我学习的东西。于是我决定重新制作这个经典的“绞刑架”游戏,但要制作一个多人版本,允许多人一起玩。
基本要求
在我有基本想法之后,我花了一些时间通过写下典型会话期间涉及的步骤列表来规划我希望游戏如何运作:
- 主持人创建游戏会话
- 主持人提供会话期间使用的用户名
- 为会话生成一个唯一链接,可以与其他玩家共享
- 玩家通过链接加入:需要用户名才能加入
- 所有玩家进入后,主持人开始游戏
- 玩家顺序在此决定,并且在整个游戏过程中不会改变
- 游戏
- 设置
- 随机选择要猜测的单词
- 玩家组(团队)被分配一定数量的生命
- 随机选择先手玩家
- 每位玩家会看到 n 个空格,代表单词的字母
- 转动
- 轮到玩家时,会显示一组字母供其选择
- 该集合中的 1 个字母在单词中,其余字母不在单词中
- 玩家选择一个字母
- 如果正确,则显示字母
- 如果没有,则从游戏中扣除一条生命
- 玩家尝试猜测单词
- 如果正确的游戏结束并且新游戏开始
- 如果没有扣除两条生命
我还画了一些草图来进一步明确我对游戏如何运作的想法。
缩小范围
减少所需的工作范围是我开发过程中最重要的部分。这时我会问自己:“哪些工作可以去掉,这样我才能在今天结束前发布?”这个问题至关重要,因为它能让我专注于最重要的功能,同时推迟那些不太重要的功能。
“我可以删除什么,以便我可以在今天结束前推出?”
我喜欢用一天作为时间尺度,因为这意味着失败的风险会降低。只要我对自己能完成的目标有切合实际的预期,就应该能够在一天内完成。即使我低估了所需的工作量,项目通常也会超出预期几天而不是几个月。更短的开发周期也意味着我可以更快地将产品交付给用户,并获得宝贵的反馈,从而指导进一步的开发。
我删除了什么
就 Hangman 项目而言,我删除了大部分功能,并决定我的第一次迭代将专注于核心游戏,不包含
多人游戏功能。没错,创建这款游戏的目的是探索实时通信,但这只有在游戏可以玩的情况下才能实现。
另外,别忘了我们说的是几天而不是几个月。如果我想的话,明天我可以继续添加多人游戏功能,而且我知道游戏的核心功能已经搞定了,我不需要再为此操心。
我把草图精简到只有一个主草图,并略微调整了一些细节,以便通知用户,比如当用户猜错的时候。我还重写了功能任务,以缩小所需的步骤。
设计
在以前的业余项目中,我通常会先跳过设计阶段,最终事后才付费。先完成设计不仅节省时间,还能避免一些麻烦,因为设计和开发决策不会混在一起。上下文切换越少越好。
我创建了一个包含主要组件的主设计图,然后又制作了一些包含其他基本功能的副本。设计图如下:
建造
随着游戏构思和设计的大部分完成,构建过程变得非常简单。我采用了之前缩小范围时写下的简化版“游戏步骤”,并开始更详细地思考每个细节:
- 游戏
- 设置
- 随机选择要猜测的单词
- 初始生命数
- 向玩家展示 n 个空格,代表单词的字母
- 转动
- 如果玩家还有生命
- 生成并显示可供选择的字母
- 玩家选择字母
- 正确:这封信被揭露了
- 错误:一条生命被夺走
- 如果玩家没有剩余生命
- 显示“下次祝你好运”消息并重启游戏按钮
- 如果已知所有字母
- 显示“恭喜!”消息和重启游戏按钮
我还收集了应用程序中使用的常用英语单词列表,并设置了项目,在提交之前使用Husky运行测试和 lint 代码。最后,我使用 React 构建了游戏create react app
,源代码请点击此处。
发射
游戏几乎瞬间就准备好部署了。我希望部署过程能够自动化,并且尽可能减少思考的时间。
对于这个项目,我选择在 GitHub Pages 上部署,这样每当我想要部署时,只需输入代码npm run deploy
,最新的更改就会自动发布。我想对这个工作流程做的一个改进是设置一个 GitHub Action,只要主分支上有提交,它就会自动部署。另一个可能更简单的选择是将托管服务迁移到 Netlify,这样在推送到主分支时就会自动部署。
审查和反馈
总的来说,我对游戏的初版很满意。我把它分享给了朋友和家人,征求了一些初步反馈。他们说游戏难度很高,如果能简单一点就更好了。我还收到一条反馈,说游戏应该在玩家生命耗尽时显示提示。
这些反馈非常宝贵。如果我开发游戏是为了盈利,那么这些最初的反馈将使我能够快速地添加用户真正想要的改进。这一切都归结于交付速度,你应该不断努力去掉所有不必要的部分,先开发最重要的部分,然后根据实际反馈快速迭代。
概括
希望本文对您有所帮助,如果有帮助,并且您想听我讲述更多故事,请考虑订阅我的邮件列表。
鏂囩珷鏉簮锛�https://dev.to/mrmadhat/how-to-launch-your-side-project-in-less-than-a-day-1alk