Skip to content

Add comprehensive 6-week tutorial series for learning Roblox game dev…#1

Open
jsonify wants to merge 1 commit intomainfrom
claude/learn-roblox-basics-01CAXSb3uVg9MwTRkzEeZmhV
Open

Add comprehensive 6-week tutorial series for learning Roblox game dev…#1
jsonify wants to merge 1 commit intomainfrom
claude/learn-roblox-basics-01CAXSb3uVg9MwTRkzEeZmhV

Conversation

@jsonify
Copy link
Copy Markdown
Owner

@jsonify jsonify commented Nov 18, 2025

…elopment

Created a complete educational tutorial series that teaches students how to build the Steal a Brainrot game from scratch, focusing on concepts and principles rather than providing exact code.

Tutorials included:

  • Tutorial 1: Map Building & Environment Design (Week 1)
  • Tutorial 2: Understanding the Core Game Loop (Week 2)
  • Tutorial 3: Server-Authoritative Combat Systems (Week 3)
  • Tutorial 4: Implementing Abilities & Cooldown Systems (Week 4)
  • Tutorial 5: UI/UX Design & Player Feedback (Week 5)
  • Tutorial 6: Testing, Balancing & Security (Week 6)
  • README.md: Master learning guide index with complete series overview

Each tutorial teaches:

  • WHY systems are designed a certain way (design principles)
  • HOW to approach problems (learning methodology)
  • Research tasks (where to look up Roblox APIs)
  • Experimentation exercises (find your own balance values)
  • Testing checklists (validate functionality)
  • Skills being learned (transferable knowledge)

Total learning path: 60-72 hours over 6 weeks
Target audience: Students learning game development
Approach: Educational, conceptual, hands-on

…elopment

Created a complete educational tutorial series that teaches students how to build
the Steal a Brainrot game from scratch, focusing on concepts and principles rather
than providing exact code.

Tutorials included:
- Tutorial 1: Map Building & Environment Design (Week 1)
- Tutorial 2: Understanding the Core Game Loop (Week 2)
- Tutorial 3: Server-Authoritative Combat Systems (Week 3)
- Tutorial 4: Implementing Abilities & Cooldown Systems (Week 4)
- Tutorial 5: UI/UX Design & Player Feedback (Week 5)
- Tutorial 6: Testing, Balancing & Security (Week 6)
- README.md: Master learning guide index with complete series overview

Each tutorial teaches:
- WHY systems are designed a certain way (design principles)
- HOW to approach problems (learning methodology)
- Research tasks (where to look up Roblox APIs)
- Experimentation exercises (find your own balance values)
- Testing checklists (validate functionality)
- Skills being learned (transferable knowledge)

Total learning path: 60-72 hours over 6 weeks
Target audience: Students learning game development
Approach: Educational, conceptual, hands-on
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @jsonify, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request delivers a complete educational tutorial series designed to guide aspiring developers through the process of creating a multiplayer Roblox heist game from the ground up. The content is structured over six weeks, progressively introducing fundamental game development concepts, Roblox-specific tools, and best practices in game design, programming, and project management. The goal is to empower learners with a deep understanding of 'why' and 'how' systems are built, fostering critical thinking and experimentation.

Highlights

  • New Tutorial Series: Introduced a comprehensive 6-week tutorial series for learning Roblox game development, focusing on building a multiplayer heist game called 'Steal a Brainrot'.
  • Educational Approach: The tutorials emphasize concepts, design principles, and problem-solving methodologies rather than just providing code, aiming to teach students to 'think like a professional game developer'.
  • Structured Learning Path: The series is broken down into six weekly modules, covering map building, core game loops, combat systems, abilities/cooldowns, UI/UX design, and testing/balancing/security.
  • Practical Application: By the end of the series, students will have built a fully functional multiplayer game, gaining transferable skills applicable to any Roblox game development project.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive 6-week tutorial series for Roblox game development. The tutorials are well-structured, cover essential concepts from map design to security, and are geared towards teaching principles rather than just providing code. I've identified a few areas in the documentation with minor inconsistencies or potential for confusion that could be improved to enhance the learning experience for students. Overall, this is an excellent educational resource.

*End of Tutorial Series*

**Want to learn more?** Check out:
- [docs/steal-a-brainrot-complete-mvp-guide.md](../steal-a-brainrot-complete-mvp-guide.md) - Implementation reference
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The link provided here points to a file that is not included in this pull request (docs/steal-a-brainrot-complete-mvp-guide.md). This will result in a broken link for anyone trying to access the implementation reference. Please ensure that all referenced files are included in the repository and that the links are correct.

Comment on lines +60 to +68
```
[NE Corner] [Guardian HQ - 50x50]
|
|
[Vault - 60x60] -------[THE CITY - 300x300]
|
|
[Drop-off] ----------[Rogue HQ - 50x50] [SW Corner]
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The ASCII art sketch of the map layout contradicts the textual descriptions provided in this tutorial. The text specifies that Rogue HQ is in the SW corner and the Vault is in the NW section. However, the sketch places Rogue HQ on the bottom-right (SE) and doesn't clearly distinguish the NW position of the Vault. This discrepancy could confuse students trying to follow the map plan. I recommend updating the sketch to align with the text.

Suggested change
```
[NE Corner] [Guardian HQ - 50x50]
|
|
[Vault - 60x60] -------[THE CITY - 300x300]
|
|
[Drop-off] ----------[Rogue HQ - 50x50] [SW Corner]
```
[Vault - 60x60] [NW] [Guardian HQ - 50x50] [NE]
| |
| |
+------------[THE CITY]-----------+
| |
| |
[Rogue HQ - 50x50] -- [Drop-off] [SW]

Comment on lines +446 to +453
```
WeaponTool (Tool object)
├─ Handle (Part) ← The visible gun model
├─ FireSound (Sound) ← Gunshot audio
├─ MuzzleFlash (ParticleEmitter) ← Visual effect
├─ LocalScript ← Handles client-side shooting
└─ ServerScript ← Handles damage validation
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The proposed structure for the WeaponTool suggests including a ServerScript inside the Tool object. While this works, it's generally better practice in Roblox development to centralize server-side logic in ServerScriptService rather than scattering it across many Tool instances in the workspace. This improves maintainability and security, as it keeps all sensitive server code in one protected location. A single script in ServerScriptService can handle the RemoteEvent for all weapons.

Suggested change
```
WeaponTool (Tool object)
├─ Handle (Part) ← The visible gun model
├─ FireSound (Sound) ← Gunshot audio
├─ MuzzleFlash (ParticleEmitter) ← Visual effect
├─ LocalScript ← Handles client-side shooting
└─ ServerScript ← Handles damage validation
```
WeaponTool (Tool object)
├─ Handle (Part) ← The visible gun model
├─ FireSound (Sound) ← Gunshot audio
├─ MuzzleFlash (ParticleEmitter) ← Visual effect
└─ LocalScript ← Handles client-side shooting & RemoteEvent firing
-- In ServerScriptService:
MasterWeaponScript (ServerScript) ← Handles damage validation for all weapons

Comment on lines +182 to +183
| **Dash Speed** | 50 studs/s (weak) | 200 studs/s (overpowered) | 80-120 studs/s |
| **Duration** | 0.1s (barely noticeable) | 1s (too long) | 0.3s |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The table suggests a 'Sweet Spot' for Dash Speed between 80-120 studs/s. However, the implementation example in section C (line 170) uses a DashSpeed of 100. To avoid confusion, it would be clearer if the recommended 'Sweet Spot' in the table directly matched the value used in the code example, or if the code example was updated to reflect a value within the suggested range. I'd recommend using 100 in the table for consistency.

Suggested change
| **Dash Speed** | 50 studs/s (weak) | 200 studs/s (overpowered) | 80-120 studs/s |
| **Duration** | 0.1s (barely noticeable) | 1s (too long) | 0.3s |
| **Dash Speed** | 50 studs/s (weak) | 200 studs/s (overpowered) | 100 studs/s |

Comment on lines +584 to +600
-- In LocalScript
while true do
wait(0.5) -- Update twice per second (balance between smoothness and performance)

-- Update player's own dot
local myPosition = player.Character.HumanoidRootPart.Position
MyDot.Position = worldToMinimapPosition(myPosition, mapCenter, mapSize, MinimapFrame)

-- Update teammate dots
for _, teammate in ipairs(game.Players:GetPlayers()) do
if teammate.Team == player.Team and teammate ~= player then
local teammatePos = teammate.Character.HumanoidRootPart.Position
-- Update their dot
end
end
end
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The example while true do loop for updating the minimap is a good starting point, but it could lead to performance issues in a real game, especially as the number of players grows. A more efficient and modern approach is to bind the update logic to the RenderStepped event from RunService. This ensures the UI updates smoothly every frame without the need for an arbitrary wait() and avoids potential performance degradation from many concurrent loops.

-- In LocalScript
local RunService = game:GetService("RunService")
local lastUpdate = 0

RunService.RenderStepped:Connect(function(step)
    lastUpdate = lastUpdate + step
    if lastUpdate < 0.5 then return end -- Update twice per second
    lastUpdate = 0

    -- Update player's own dot
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        local myPosition = player.Character.HumanoidRootPart.Position
        MyDot.Position = worldToMinimapPosition(myPosition, mapCenter, mapSize, MinimapFrame)
    end

    -- Update teammate dots
    for _, teammate in ipairs(game.Players:GetPlayers()) do
        if teammate.Team == player.Team and teammate ~= player and teammate.Character and teammate.Character:FindFirstChild("HumanoidRootPart") then
            local teammatePos = teammate.Character.HumanoidRootPart.Position
            -- Update their dot
        end
    end
end)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants