1 of 35

Mod. 5

Roblox RogueLite

By Thomas Polito & Ian Behn

1

2 of 35

Background

01

3 of 35

What is LuaU?

LuaU is not Static… or Dynamic, but rather both! This is possible because it is a Gradually Typed language.

This means it can be both weakly typed and strongly typed… how?

This also means that some code is checked at Compile Time, and other code is checked at Runtime.

LuaU was made by Roblox in 2019

https://luau.org/2022/11/04/luau-origins-and-evolution.html

4 of 35

What is a RogueLite?

RogueLites are derived from RogueLikes, a genre of game characterized by having randomly generated levels you go through and upgrade your character along the way. Some examples include: Hades, The Binding of Isaac, Risk of Rain, Dead Cells, etc.

RogueLites in particular typically have permanent upgrades the player can obtain outside of runs, and also deviate from conventional RogueLikes.

5 of 35

Goals

What were our goals?

  • Create & Randomize upgrades
  • Create & Randomize rooms
  • Create enemies with a follow AI & randomize their spawn
  • Create a boss fight
  • Learn to make GUI
  • Learn to make NPC AI
  • Learn 3D animation
  • Learn how to use DataStores

6 of 35

Ghouls

  • A lot of the issues came from GUI (More on that later)
  • Another issue was one of Skeleton Lord’s attacks. When he would Pivot to a Lerp(), the model would do weird things.
  • Another issue was him disappearing after leaping, but the solution to that was the same as the previous problem.
  • Layering GUI
  • HRP Offset

7 of 35

Animation

02

8 of 35

Keyframes

Keyframes are an essential part of animation. They serve as little snapshots in time that store the properties of their respective bone (In this case parts). When moving from one keyframe to another, the computer will interpolate between them. This means that the computer will change the properties of the part currently to match the properties it has stored in the next keyframe in the given time.

The unit of time used on the Timeline has 3 options, frames/second, frames, or seconds.

9 of 35

Scripting

03

10 of 35

Server-Client Boundary

The Clients see what the server does, but can’t access the server directly.

While the server can’t see what the Client does, and can’t access the client directly!

This is the Server-Client boundary. It prevents the client from injecting code into the server. However, there are ways to bypass the barrier. These are called RemoteEvents, and can be fired from a local script into a server script, or the other way around.

11 of 35

The Scripts

There are 3 types of scripts in RBX Studio.

  • Script : Runs on the server. Must be parented to an instance to work.
  • Local Script : Runs on the client. Must be parented to an instance to work. Must also have a Player.
  • Module Script : Serves as storage for stuff to be used in other scripts. It must be a table, but can contain functions. While LuaU doesn’t necessarily have classes, this is the closest thing.

12 of 35

NPC AI

Basic AI

  • Enemy finds player
  • Enemy checks if player is in detection distance
  • If player is in detection distance, move to the player.
  • If player is too far or too close, then stop
  • Additional stuff for attacks

13 of 35

GUI

04

14 of 35

The GUI Headache

GUI was easily our biggest problem. We ended up remaking the GUI multiple times before finally settling, and after running into MANY problems.

The most prolific problem was how the GUI would change and distort when run on different screen sizes. After some research, we discovered that we had to use scale instead of offset. Scale makes it so the size of GUI scales off of its parent, which, if the parent is game, will cause it to scale off of the client’s screen size, which solved the issue.

15 of 35

What was our GUI?

Our GUI showed:

  • Health
  • Attack mode
  • Melee combo counter
  • Melee combo timer
  • Attack cooldown

16 of 35

Radial Progress Bar GUI Code

17 of 35

Upgrade GUI

Appears after the player clears a room

  • Allows the player to choose one upgrade out of 3 randomly chosen ones.

18 of 35

Upgrade GUI Code

19 of 35

Modeling

05

20 of 35

Back to Blender

Using prior modeling experience, we decided to, yet again, employ the use of Blender

We used Blender to create assets that we otherwise wouldn’t be able to make in RBX studio and then imported them into RBX studio.

21 of 35

Some Models

22 of 35

06

The Game

23 of 35

Controls

  • Q to dash
  • R to switch between melee & ranged attack modes
  • WASD to move
  • Player faces your cursor
  • Click to attack

24 of 35

Objective

  • Every room has 3 waves
  • Defeat every enemy in the wave to continue to the next wave, or if you take too long the next wave will start anyways. Defeat all enemies in every wave to clear the room.
  • obtain power ups to challenge the boss
  • Defeat the boss to win

25 of 35

The Enemies

26 of 35

Skeleton Warrior

Skeleton wielding a sword

  • 15 Movespeed
  • 15 Damage
  • 100 health
  • Slashes at the player when close enough

27 of 35

Skeleton Archer

Skeleton with a bow and arrow

  • 17 Movespeed
  • 10 Damage
  • 75 health
  • Runs away when player gets too close

28 of 35

Skeleton Bulwark

Large skeleton with a tower shield

  • 7 Movespeed
  • 20 Damage
  • 225 health
  • Charges at the player

29 of 35

Husk

Slow, ranged & melee zombie

  • 14 Movespeed
  • 35 Damage (scratch)
  • 5 Damage (acid)
  • 45 health
  • Scratch and acid spit attacks

30 of 35

Skeleton Lord

Large, formidable skeleton with an array of attacks

  • 15 Movespeed
  • 1500 Health
  • Sweep attack
  • Stomp attack
  • Barrage attack
  • Leap attack
  • Impale attack
  • Spin Kick attack

31 of 35

The Player

The player!

  • 17 Base movespeed
  • 100 base health
  • Ranged mode (5 damage)
  • Melee mode with combos (15 damage)

32 of 35

Demo

07

33 of 35

Breakdown

  • In the interest of time, we are only going to show one room & then the boss.

In the 3 waves, it will be as follows:

  • Wave 1 : 5 enemies
  • Wave 2 : 6 enemies
  • Wave 3 : 7 enemies

34 of 35

Thank You!

CREDITS: This presentation template was created by Slidesgo, and includes icons by Flaticon and infographics & images by Freepik

35 of 35

Music Credits