Greed Monger - Free To Play Crafting Focused MMORPG (501601)

It will be standalone: Windows, Mac, and maybe Linux post launch.

JamesPro, I see you talking about “parcels” of land, how are you working this. Are you having the land with a hidden grid and when you buy land you can claim a set size of land. Or are you having the land pre-arranged and the player can just buy it?

A few questions, what front end did you go with, such as log in, or did you guys design your own? Also what network system did you go with? How did your team come together? Did you mostly find people on line or did the core members already know each other? Did you guys already have in game footage at the time of the KickStarter? Just a few questions, thanks.

Frontend we are using Unity3D of course… I think you meant Backend. For the Backend we are using the uLink networking Engine from Much Different. Authentication is our own custom Authentication system. Players are able to register an account right from the Client. User information goes through a series of encryption both on the Client before ever heading across the network and then again once on the Server.

Our Team is comprised of People from around the world. None of us knew each other when we first started out. For the KickStarter we had some small demos that Jason and I built and recorded Video of. Nothing was networked at the time and ALOT has changed since then.

Well I thought I would share an interesting topic with you guys today… External Scripting Engines. In MMOs a requirement we have is that Content be added on a regular basis. If you constantly have to recompile the entire project however it leads to excessive down time and unneeded hassle. To get around these issues we are using a custom IronPython Scripting engine which allows us to add new scripts with out the need to recompile anything or even to restart the server. In Greed Monger we can write entire systems in Python and then access them on the server. At this time however our use of Python is limited to Chat Commands and create templates for everything from Spells to Mobs and everything in between.

Below are some examples of actual scripts running on our server right now:

This first script contains all of our Chat Commands that we have done in Python.

import GreedMonger
import UnityEngine
import Commands
import uLink
from UnityEngine import *
from GreedMonger import *
from Commands import *
from uLink import *

command = CommandManager.getInstance()

class TestCommand (ICommand):
	def GetCommand(self):
		return "/test"
	def HandleCommand(self, command, info):
		Debug.Log("This is from TestCommand!")
		return True

command.RegisterCommand(TestCommand())

class Teleport(ICommand):
	def GetCommand(self):
		return "/stuck"
	def HandleCommand(self, command, info):
		Debug.Log("Teleporting Player!")
		player = info.sender.localData
		spawn = GameObject.Find("Spawn")
		character = player.GetComponent("Character")
		character.Teleport(spawn.transform.position)
		return True

command.RegisterCommand(Teleport())

class WeatherCommand(ICommand):
	def GetCommand(self):
		return "/weather"
	def HandleCommand(self, command, info):
		Weather.Instance.UpdateWeather()
		return True

command.RegisterCommand(WeatherCommand())

This next script shows some work being done on our Quest and Dialog systems:

import GreedMonger
import UnityEngine
import Commands
import uLink
import Quests
from UnityEngine import *
from GreedMonger import *
from Commands import *
from uLink import *
from Quests import *

questMgr = QuestManager.getInstance()

kill = KillQuest()
kill.setID(questMgr.GetQuestID())
kill.setName("Kill the wolves!")
kill.setDescription("You have been tasked with eliminting the Wolf threat from the land!")
kill.setObjective("Kill 3 wolves and bring their heads to me")
kill.setIncompleteText("Why are you still here bothering me? Please destroy the Wolves before they cause us any more issues!")
kill.setKillObjective("Server_Arctic_SnowWolf(Clone)", 3)
kill.chainQuest = True
kill.setStartQuest(kill.getID()+1)
questMgr.RegisterQuest(kill)

chainA = KillQuest()
chainA.setID(questMgr.GetQuestID())
chainA.setName("Protect the Villagers")
chainA.setDescription("Now that you have killed off some of these wolves I saw some headed for the Village! Can you go and protect the Village?")
chainA.setObjective("Protect the Villagers from the Wolves")
chainA.setIncompleteText("Hurry! The Wolves are attacking the Villagers!")
chainA.setKillObjective("Server_Arctic_SnowWolf(Clone)", 6)
questMgr.RegisterQuest(chainA)

optionA = DialogOption("Good bye!", 1)
optionB = DialogOption("How are you doing?", 0)

dialogMgr = DialogManager.getInstance()

welcome = DialogText()
welcome.id = 0
welcome.text = "I am doing Great thanks for asking!"
welcome.setOption(optionA)
dialogMgr.registerDialog(welcome)

dialog = DialogText()
dialog.id = 1
dialog.text = "We are under attack by these darn wolves! We really need some help right away!"
dialog.setOption(optionB)
dialogMgr.registerDialog(dialog)

The below script shows how to define Vitals, Spells, and Items:

import GreedMonger
import System.Collections.Generic
import UnityEngine
from UnityEngine import *
from GreedMonger import *
from System.Collections.Generic import *

combatMgr = CombatManager.getInstance()
items = ItemDB.getInstance()

## Vitals

vital = Vital()
vital.id = combatMgr.getVitalID()
vital.name = "Health"
vital.startValue = 47
vital.curValue = 33
vital.maximumValue = 120
vital.trigger = StatusTrigger.Death
vital.gain = 0.2
vital.tempValue = 0
combatMgr.registerVital(vital)

spell = Spell()
spell.id = combatMgr.getSpellID()
spell.name = "Fireball"
spell.maximumValue = 10
spell.curValue = 0.4
spell.gain = 0.1
spell.animation = "M_Warlock_fire_ball_spell"
spell.icon = "fire ball"
spell.delay = 5
spell.range = 20
spell.EffectPrefab = "Fireball"
spell.reduceOwnerVitalId = combatMgr.getVitalIDByName("Mana")
spell.baseOwnerDamage = 9
spell.damageType = DamageType.Fire
spell.tab = 3
spell.minLevel = 0
spell.castOnVitalId = 1
spell.castOnDamage = 20
spell.castOn = List[CastOn]()
spell.castOn.Add(CastOn.Player)
spell.castOn.Add(CastOn.Enemy)
spell.debuffDelay = 0
spell.aoeRange = 0
combatMgr.registerSpell(spell)

ironIgnot = InventoryItem()
ironIgnot.id = 323
ironIgnot.type = "Crafting Material"
ironIgnot.subType = "Iron"
ironIgnot.name = "Iron Ingot"
ironIgnot.equipableSlot = 999
ironIgnot.curStackSize = 100
ironIgnot.maxStackSize = 100
ironIgnot.isStackable = True
ironIgnot.textureName = "iron ingot"
ironIgnot.location = "Bag"
items.RegisterItem(ironIgnot)

Then last but not least what I’ve been working on today. Mob and Spawn Templates:

import GreedMonger
import UnityEngine
from UnityEngine import *
from GreedMonger import *

wolfSpawn = GameObject.Find("wolfSpawn")
spawnData = wolfSpawn.GetComponent("MobSpawn")
spawnData.maxSpawn = 1
spawnData.respawnTime = 20

wolfTemplate = MobTemplate()
wolfTemplate.name = "Wolf Pup"

spawnData.template = wolfTemplate
spawnData.mobFactory = MobFactory()

As you can see we use Python for just everything we possibly can. There is still room to expand our Scripting engine and as the need presents it’s self we will expose more and more classes to Python.

If you would like to get started using IronPython in your own projects please let me know and I can get you setup with my custom scripting engine and the correct version of IronPython to use with Unity3D!

Just thought I would let you guys know that Greed Monger is now in a Live Pre-Alpha Phase up until we launch our Alpha. All of our KickStarter backers have received an email containing the link to the client. We now have potentially 700+ with access to the Client running around testing things out.

Some Activities already being done:

  • Exploration
  • Hide and Seek
  • Village construction
  • PvP
  • PvM
  • Crafting
  • and a whole lot more.

We have had a total of 2 days pass in game so far.

When will you be sharing some live in-game video? I’d love to see how the game performs with all this action going on!

very nice,
I am interested on your IronPython scripting engine,
I sent you a pm.

looking forward.
regards

Hi JamesPro,

I was wondering if you looked at my PM i sent you regarding your python scripting engine 2 weeks ago.
I just sent you another one just in case you missed the other one

please let me know , i am very interested

thanks.