I want to dive into learning a particular language or engine for the development of a tilebased "roguelite" rpg. I'm hung up between learning Python or Unity. I understand Unity uses c# and seems to have a good number of tutorials but I've also found some great stuff for Python. Was hoping to get some input on what would be a better language for a beginner... thanks!
Deciding between languages/engines for beginner roguelike development
Maybe https://godotengine.org/? It uses python-like programming language and is very good for tilebased games. Definitely strong player on the engines market and it's free for commercial use.
Eric Nevala
Indie Developer | Spellbound | Dev blog | Twitter | Unreal Engine 4
Python if you want to work your way up, Unity and C# if you want to learn by playing around. Unreal is fantastic, however very hard for beginners.
Remember your not set with a engine for life, the skills you learn in one engine will help you adapt to a new one. Also remember that the chances are you will never finish your first game, so be ready to fail.
C# is almost the same on the surface as python. In other words, if you don't actually plan on being a programmer both will be easy to learn.
C# will take longer as it has more rules, however the extra rules also mean more tools and less mistakes.
Python:
#This is python
class Enemy:
def __init__(self, InHealth, InMana): #In python this is our constructor
HP = InHealth
MP = InMana
def GetHP(self):
return self.HP
def DamageEnemy(self,InDamage):
self.HP -= InDamage
#We then use it like this
Wolf = Enemy(100,10) #This makes a wolf with 100HP and 10MP
Print(Wolf.GetHP()) #Prints 100
Print(Wolf.MP) #Prints 10
Wolf.DamageEnemy(10)#(100 -10)
Print(Wolf.HP)#Prints 90
In Python you don't have to declare what a value is, the = sign defines it.
C#:
// This is C#
public class Enemy{
int HP;
public int MP;// Public allows us to call the value from outside.
public Enemy(int InHealth, int InMana)
{//In C# this is the constructor
HP = InHealth;
MP = InMana;
}
public int GetEnemyHP()
{
return HP;
}
public int DamageEnemy(int InDamage)
{
HP -= InDamage;
return HP;
}
}
// To use it we do this:
Enemy Wolf = New Enemy(100,10); //A worlf with 100Hp and 10Mp was made
print(Wolf.GetHP());//prints 100
print(Wolf.MP);//Prints 10
Wolf.DamageEnemy(10);// (100 -10)
print(Wolf.GetHP());//prints 90
Mostly you will notice that Python is shorter, you don't have to declare the variables and all variables are public.