RotMG Inspired Game Development!


#1

Hey there! After some previous posts across various topics about my willingness to create a version of realm that reflected the older Wild Shadow ideals, and my lack of programming skills when it came to the subject, I’ve decided to pursue this goal inbetween school.

I am not promoting or creating a private server.

It will graphically differ from the realm of today, since the sprite work by Deca Games is proprietary. I will be utilizing some of Oryx’s sprites from their website, and what sprite work I can either create myself or purchase from artists. Since this is a fanmade game, the core game loop will be similar to that of Realm’s, but supplemented with other ideas and changes to make it a unique experience, and not a clone or pserver.

Which leads me onto the server aspect. Since this is a new game and not a private server, I’m going to have to write the server from scratch. This will delay development in terms of reaching the final product, but I’ll be happy to develop and release side by side, the same way realm was made.

Realm Similarities:

  • An orthographic projection based camera
  • Basic gameplay (bullet hell mmo, stats, status effects, etc.)
  • Art style

Realm Differences:

  • An open economy (no sb or p2w)
  • More rpg focused elements, such as story, quests, a larger map that isn’t procedurally generated.
  • Removal of pet abilities
  • Secondary, Tertiary, etc. class abilities.

I suppose, it’s going to be more rpg based. But I hope to retain that fast paced gameplay. In traditional rpgmmo’s such as WoW or Rift, advanced gameplay becomes min-maxing and having thirty six keyboard macros. And in the current state of realm, because of the advent of pets, end game difficulty is throwing high damage, high speed bullets at a group of players. I miss the days of Wild Shadow, where a few shots didn’t mean life or death, but you were punished for not dodging. Imagine if boss fights in realm where those akin to Enter the Gungeon, UnderMine, or The Binding of Isaac? Of course, this also involves the topics of damage immunity and contact damage. You are not punished in Realm by standing on an enemy until it shoots. In the case of bomb projectiles, this seems reasonable. But being able to stand on a stunned Oryx the Mad God or a boss in between phases has always rubbed me the wrong way. Damage immunity can’t exist in a game where pet healing exists, but can, where variable contact damage does.

Mechanics and theorycrafting aside, this game is barely out of the conceptual stage. I have a notebook with a handful of ideas and game code strewn about, but I have a long path ahead. I’m going to be using Unreal Engine as the base game engine, with C++. I’ve never programmed in this language before, but I hear it’s similar to Java, so I shouldn’t have that many issues on that front. I’ve been formally educated in full stack development, and I’m striving to become a software engineer as an occupation, until I can land a job in the physical sciences a decade down the road. My inexperience will more likely stem from using Unreal Engine, but this isn’t the first time that I’ve developed a multiplayer game.

Originally, I was just going to make a client for RotMG in Unreal Engine, but that would break the Deca ToS. So a new game it is! I’m definitely thrilled for the Unity Port!

This forum post isn’t one of grandeur: Let’s create a better ROTMG like game
Or one of asking for funds: RotMG/Diablo Inspired Game/Kickstarter!

I’m just putting myself out there, looking for any ideas, questions, criticisms, and holding myself accountable.


The General Chat Thread
Life, the passage of time, and the state of the game
#2

sorry pal, but im gonna have to report you to DECA for [reasons that don’t matter] and because [you call me mean word long time ago >:( ]

nah but seriously, I look forward to seeing progress updates on this, and I’ll be more than a little happy if this comes to be a full on game :smiley:


#3

First off, I wanna say that this sounds pretty epic.
I’m going to make a few suggestions, but feel free to take them with a grain of salt.


Make it super exhilarating. By this, I mean to make the Boss fights very suspenseful in a fun way. You can do this by forcing players to come really close to Bosses – so close that it’s scary.

Pets are common features in a lot of games. They act as both digital companions as well as help to the users. I would hate to see them reduced to possessing no abilities.
While I agree that pets in RotMG are broken, perhaps add some small, fun effects. For example, keep Electric and Rising Fury, and maybe throw in a light regeneration buff. Nothing overpowered.

This is a cool thing that I would love to see. Are you going for more of LoL approach?


A few questions that I have in mind:

  • This is still…uh…perma-death, right?

  • Will there still be dungeons?

  • How many classes are you thinking? 5? 10? 20?


I have a feeling this will turn out great! If you need any help with anything, just ask.

Best of luck in the Realm,
Gamma :v:


#4

Good luck


#5

Don’t forget spawning oryx on the beach, double rings and grave looting :wink:


#6

I definitely plan on it. Because the engine is unreal, I can work with a lot more specialized game mechanics, such as varied shot patterns based on classes present, targeting of certain classes, etc.

Proximity to the boss can be useful sometimes, but I don’t want to punish the long range players at the same time.

The functionality of pet abilities will be stripped. But this doesn’t mean that other aspects of the game can’t fill that void. Pets will be purely cosmetic, like they used to be, but classes and map mechanics will make up for this.

I don’t know if classes will an ultimate move, but I love the idea of both classes and gear, having passive and active effects. Deca has already been playing with passive effects on gear for the last few months. I’m thinking of 3 active class abilities, with certain items like UTs affecting not only how one works, but the entire set. I’ll draw up some google docs to flesh this out.

Yes! I have an idea to make death a little forgiving, but overall it will remain a permadeath game.

Of course!

I’m to start initially with a handful. Potentially enter Alpha with 10. Beta with 15 - 20. Release from 15 - 30. I’m not unhappy with Realm’s current roster, but I find the choices sometimes limiting. Itemization is supposed to account for this, but with realm’s item drop system, you can theoretically go your whole realm experience without an important item for gameplay.


#7

Classic! Unfortunately the Oryx (boss) sprite is proprietary, so I’ll have to make my own BBEG. And for that matter, a different naming convention. While the name Oryx is not owned by anyone, I don’t want the name of the game to be too similar. Puffagod’s dungeon “Oryx’s Paracosm” has a nice ring to it, but name ideas are so far on the back burner. I’m still working on entity collision and texturing.


#8

I want to be a GM please


#9

Honestly I’d love to help you with this if you happened to be looking for any help, but I’m not exactly the best with C++ anyway. :sweat_smile: Good luck anyhow.


#10

Perhaps once I have something concrete. Today I just learned class structure with C++, and started the planning for the networking. The client will obviously be utilizing UE4, while the backend will be proprietary in pure C++. I’ll be using WebSockets to move data back and forth, using binary packets. I’ll probably reach out for help when making the map, enemies, weapons, dungeons, etc.

@LudwiGa I’ll definitely be looking into a moderation system, though an anticheat system like CS:GO looks quite appealing. Having the server record snippets of gameplay from a flagged individual, and then judged by players. And a blanket system to catch blatant hacks.

The following is my roadmap:

  1. Orthographic projection camera
  2. Player movement
  3. Player camera rotation controls
  4. Tiling texture system
  5. Unloading of unseen tiles
  6. Loading animation for seen tiles
  7. Character sprites
  8. Server side chat system
  9. Server side game state validation
  10. Player inventory
  11. Dungeon instances
  12. Persistent storage, such as vaults
  13. Login & Reg
  14. Rudimentary Nexus design
  15. NPCs
  • Player Hit Detection
  • Enemy Hit Detection
  • Projectiles
  • Enemies
  • Dungeons
  • Gear
  • Stats
  • Lore
  • Quests
  • Overworld map design

Some design choices that I’m planning out early: The Overworld (not official name), will consist of level targeted zones. You can pass between zones regardless of level. Zones will contain relative difficulty enemies, relative gear, and towns. Towns will act as points of fast travel, provide some quests, lore, and other mechanics. Players will not be able to freely teleport across the map. They can only fast travel to towns they’ve explored before. When you join for the first time, you’ll go through a tutorial, and be brought to the Nexus. When you join the overworld for the first time, you will start at a random low zone. Explored towns will not be lost on death. When you Nexus from inside the overworld, your location will be bound to the closest explored town in your zone, or last town visited if the first check fails. One perk of being in a guild, is free player teleportation between guild members, within the same zone. The game won’t have microtransactions. Nor will it have ads. I’m leaning towards donationware, with in game perks that aren’t p2w. I’m thinking of having character trees for sub classes etc. There will zone specific events, like random occurrences the player can discover, and global events that will be announced. The “godlands” area will be accessible from an early level, through means that I will work out. I have a basic idea for the overall lore of the world, though I’ll need to story board smaller quests. I want the quest system to be supplementary, and not necessary.

I realize now, that the game will truly be different from realm, but that’s okay! I’m excited for it! I am currently sick, so just the camera work is probably going to take a week.


#11

What will you use to host? This could make a big difference because if you use the same potato servers as realm, massive lag will ensue


#12

Wait did you just change your RotMG name?


#13

I changed it about a week ago. HeyItsWii was a shortened version of WiiLikeToPlay2, my old internet presence / IGN. I have long since moved on to Kalightortaio online, across all of my accounts, yet HeyItsWii, or Wii, persisted on realm. I just recently changed it since I had money to burn (10$ is not something a college student takes lightly). Since realm has a ten character limit, I opted for my current IGN’s nick name, Kalitaio.


#14

Because I’m designing the game with a fraction of the player base (80,000) in mind, I’m expecting a theoretical peak of 1,000 concurrent players, initially. I’ll be using an Amazon EC2 server, somewhere in the middle of the US. As the game expands, I’ll open more servers as needed, in other continents. Because most of the processing will be done on the client side, I don’t expect server lag to be an issue.


#15

Alright, I have the camera working, but not the camera controls yet. I know how to handle input from the client side. I’m absolutely lost on the rest, but I’m going to try to get some basic art textures working, and then work on shots and classes.

The textures are giving me a headache. I really don’t know where to start. I don’t even know how to properly scale the game. 1 UE unit is equivalent to 1 centimeter. 1 tile is an 8x8 sprite, which is 64 pixels. If I just set 1 UE to 1 pixel, that seems like the easiest solution. Regular realm is 12 tiles in height and width. It is a 800x600 window, but the minimap and inventory gui takes up 200 width. So the base game is 600x600 pixels, or an average of 12 50x50 sprites. However these sprites are 8x8, therefore the standard ratio is 1:6.25. To achieve a 600x600 window with a width of 12 tiles, each tile must be 50 pixels, where in one 8x8 sprite is scaled up by a factor of 6.25. I’d want to make the game window larger however, to 18 tiles, so a 900x900 resolution. By keeping the same scale, the game won’t look zoomed out. I’m going to have to play with the camera to achieve the proper scale however.

In the meantime of struggling with C++ and UE4, I’m going to organize my ideas for the game, and ask for forum feedback!

2 New Stats:

Evasion - Chance to dodge damage

Resolve - Lowers the effectiveness of debuffs

Abilities will be bound by default to Space, RClick, and Shift.

Assume that most abilities cost MP unless stated otherwise. Will implement ability costs when the stat system is implemented.

Wizard - Staff, Spell Tome, Robe

  • Passive: Magical Strength
    • Maxed stats improves the player’s spells in a different manner.
    • 6/10: Lesser Restoration heals for 50%.
    • 8/10: Blink damage is reduced by 25%.
    • 10/10: Spell Tome can be charged to deal more damage and aim precisely, but takes more MP this way.
  • Ability: Spell Tome
  • Ability: Blink
    • Uses: 3
    • Cooldown: 90s
    • On first cast, teleport a set distance towards the cursor.
    • On second cast, teleport a shorter set distance towards the cursor, and take damage.
    • On third cast, teleport a minimal set distance towards the cursor, and take moderate damage.
  • Ability: Lesser Restoration
    • Cooldown: 40s
    • Heals the player for 35% Maximum HP.

Mystic - Staff, Stasis Orb, Robe

  • Passive: Mysticism
    • Any effects that increase stats are equally distributed across all stats.
  • Ability: Stasis Orb
  • Ability: Planar Shift
    • Cooldown: 15s
    • Short range teleportation, stuns player briefly
    • Point and click, within range
  • Ability: Temporal Shift
    • Duration: 5s
    • Cooldown: 45s
    • Slows enemy projectiles in a WisMod radius around the player.

Necromancer - Staff, Skull, Robe

  • Passive: Phylactery
    • Prevents Death, grants temp HP, which cannot be healed.
    • Cooldown: 1h
  • Ability: WisMod/SkullMod AoE damage & AoE heal
  • Ability: Attacks heal
    • Duration: 10s
    • Cooldown: 120s
  • Ability: Summon Undead
    • Costs max health per summon, cannot summon undead after minimum health reached.
    • Grants player temp HP, which cannot be healed.
    • When the summon dies, max health is returned to the player, and temp HP is removed.
    • Deals contact damage based on WisMod/SkullMod.
    • Summons in radius close to player

Druid - Staff, Totem, Robe

  • Passive: Heart of the Forest
    • The player gains increasing dexterity based on missing health.
  • Ability: Plant Totem
    • Cooldown: 6s
    • Plants a totem in front of the player. It grants a wisdom buff to nearby players. It spawns with a WisMod amount of HP, and can take damage. There can only be one totem active per use. It lasts until the player moves out of range, or the totem is broken by damage.
  • Ability: Druidic Roots
    • Cooldown: 30s
    • Travels to cursor, dealing damage in its path. Enemies at the travel destination will be briefly paralyzed.
  • Ability: Channel Divinity
    • Cooldown: 120s
    • Summons a nature spirit that deals 5% of the target’s current health. The player is petrified for 5s. The player is then healed by the spirit for damage done.
    • Summons in radius close to player.

Priest - Wand, Tome, Robe

  • Passive: Prayer Circle
    • All players within a WisMod radius receive a vitality boost, does not stack.
  • Ability: Tome
  • Ability: Exorcise
    • Duration: 10s
    • Cooldown: 180s
    • Gives the player the damaging buff, and weakens targets struck.
  • Ability: Last Stand
    • Duration: 5s
    • Cooldown: 120s
    • Gives all players within a radius, healing and magic healing, until they are damaged.

Sorcerer - Wand, Scepter, Robe

  • Passive: Cracked Wand
    • Raw Magic surges through each attack, often jumping to nearby enemies.
  • Ability: Scepter
  • Ability: Lightning Bolt
    • Cooldown: 240s
    • Deals massive amounts of damage and lowers the dexterity of enemies.
    • Point and click, delayed attack.
  • Ability: Plasma Ball
    • Cooldown: 120s
    • A very slow moving projectile that damages nearby enemies, and causes any enemy struck to be significantly paralyzed.
    • Fired toward cursor.

Warlock - Wand, Arcane Focus, Robe

  • Passive: Mana Skin
    • Any health lost is converted to MP.
  • Ability: Arcane Blast
    • Cooldown: 6s
    • Deals damage
  • Ability: Arcane Sight
    • Duration: 8s
    • Cooldown: 60s
    • Gives the player darkness and increased vitality.
  • Ability: Arcane Surge
    • Duration: 12s
    • Cooldown: 24s
    • A random effect is given to the targeted enemy, and to the player.
    • Targets next enemy hit.

Archer - Bow, Quiver, Leather Armor

  • Passive: Nimble Shot
    • Grants slowly decaying speed on hit, caps at SpeedMod, does not stack.
  • Ability: Quiver
  • Ability: Eagle Eyes
    • Duration: 15s
    • Cooldown: 120s
    • Doubles the effective range of the bow.
  • Ability: Bow Strike
    • Cooldown: 1s
    • Makes a melee attack with the bow, stunning the player briefly, and slowing the target.

Huntress - Bow, Trap, Leather Armor

  • Passive: Precise Aim
    • Reduces dexterity by 40%
    • Deals DexMod %MaxHP damage
  • Ability: Trap
  • Ability: Heavy Crossbow
    • Cooldown: 120s
    • Knocks back target significantly
    • Fires like a quiver.
  • Ability: Elemental Arrow
    • Duration: 3s
    • Cooldown: 15s
    • Cycles through Water, Fire, Air, and Earth, after each use.
    • Water: Slows
    • Fire: Burns
    • Air: Weakens
    • Earth: Exposes
    • Fires like a trap/poison.

Ranger - Bow, Critter, Leather Armor

  • Passive: Teamwork
    • Attacking an enemy also targeted by your critter will deal 50% more damage.
  • Ability: Fetch
    • Duration: 5s
    • Cooldown: 30s
    • Targets an enemy to be slowed and attacked. If no enemies are targeted, your critter will attack the closest enemy to it.
    • Point and click, within range.
  • Ability: Tend to Wounds
    • Duration: 5s
    • Cooldown: 120s
    • Your critter slightly heals nearby players over time.
  • Ability: Forage
    • Cooldown: 180s
    • Commands your critter to find consumables to aid in battle.

Knight - Sword, Shield, Heavy Armor

  • Passive: Fortification
    • Heals the player when standing still, interrupted by taking damage.
  • Ability: Shield
  • Ability: Hold Fast
    • Cooldown: 1s
    • Toggles, when active, reduces speed and dexterity by 25%, increases defense by 25%.
  • Ability: Bastion
    • Duration: 5s
    • Cooldown: 300s
    • Absorbs piercing shots, and gains 75% damage reduction.

Paladin - Sword, Seal, Heavy Armor

  • Passive: Holy Strikes
    • Deals 25% more damage to the undead
  • Ability: Seal
  • Ability: Inspire
    • Cooldown: 120s
    • Gives nearby players temp HP.
  • Ability: Divine Light
    • Duration: 10s
    • Cooldown: 60s
    • Struck enemies burn. Struck players have increased vitality.
    • Targets multiple random locations on the screen.

Warrior - Sword, Helm, Heavy Armor

  • Passive: Well Trained
    • Grants a bonus to your lowest stat.
  • Ability: Helm
  • Ability: Dodgeroll
    • Cooldown: 1s
    • Rolls in direction of momentum.
  • Ability: Break Free
    • Cooldown: 120s
    • Removes any movement restricting debuffs.

Ninja - Katana, Star, Leather Armor

  • Passive: Become Unseen
    • When standing still for 3s, the player becomes invisible. Any actions will reveal the player.
  • Ability: Star
  • Ability: Slash
    • Stored Uses: 3
    • Cooldown: 45s
    • Deals damage and moves the player behind the enemy hit.
    • Targets an enemy the character is facing, within range.
  • Ability: Focus
    • Cooldown: 45s
    • Refills 50% of maximum mana. Refills 100% if invisible.

Samurai - Katana, Waki, Heavy Armor

  • Passive: Disciplined
    • Gain decaying attack on hit, caps at WisMod, does stack.
  • Ability: Waki
  • Ability: Slice Shots
    • Duration: 10s
    • Cooldown: 180s
    • Grants the power to split incoming shots towards the player. Dexterity is heavily reduced during the effect.
  • Ability: Heavy Strikes
    • Duration: 10s
    • Cooldown: 120s
    • Attacks bypass armor.

Slayer - Katana, Art, Heavy Armor

  • Passive: Indomitable
    • Gains double the benefits from armor. Damage reduction cap is increased.
  • Ability: Art
    • Duration: 6.5s
    • Cooldown: 6s
    • Applies special effect to attacks
  • Ability: Rage
    • Duration: 30s
    • Cooldown: 180s
    • While raging, Life and Resolve are buffed. Additionally, all damage taken during this effect is taken as bleed damage (DoT).
  • Ability: Burn
    • Cooldown: 1s
    • Toggles, when active, sets player on fire, and does extra damage on hit.

Rogue - Dagger, Cloak, Leather Armor

  • Passive: Backstab

    • Deals 100% more damage from behind an enemy.
  • Ability: Cloak

  • Ability: Backtrack

    • Cooldown: 30s
    • Teleports the player to their previous location of 5s in the past.
  • Ability: Sneak

    • Cooldown: 10s
    • Hold down the key to sneak. Does not cost MP.
    • Speed is reduced by 50%. The player becomes invisible. Attacking will end the invisibility. Sneak Attacks deal 50% more damage to an enemy.

Trickster - Dagger, Prism, Leather Armor

  • Passive: Mirror Master
    • Damage taken is also dealt back to enemies.
  • Ability: Prism
  • Ability: Throw Prism
    • Cooldown: 20s
    • Lobs the prism as a slow moving projectile. If it hits an enemy, it deals damage. If it lands safely, it will activate the prism in that location.
    • Fires like a trap/poison.
  • Ability: Perplex
    • Duration: 6s
    • Cooldown: 60s
    • Confuses the target.
    • Point and click, player must be in line of sight to target.

Assassin - Dagger, Poison, Leather Armor

  • Passive: Addictive Fumes
    • Heals slightly for poison damage done.
  • Ability: Throw Poison
  • Ability: Noxious Brew
    • Duration: 20s
    • Cooldown: 120s
    • Rapidly increases vitality, and lowers evasion.
  • Ability: Coated Blade
    • Duration: 10s
    • Cooldown: 120s
    • Deals extra damage on attack, and exposes enemies.

#16

Quick Update: I am now a little less confused on how to implement character sprites and world textures. The character sprite is 2d, tilted at the camera angle in 3d space. Meanwhile the world textures all have a max draw distance, and the character has a fog of war effect, hiding the loading/unloading of nearby textures.


#17

Thats getting epic bro, but how is the “behind an enemy” going to work? Because you being behind an enemy depends on how you rotate your camera


#18

Enemies will have an indicator what direction they’re facing when the rogue is invisible.


#19

I read your name history and you wasted $10 bro lmao


#20

I just tried pronouncing it and realized I love it. It’s a good name.
It’s “cali-tie-oh”, right?