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.
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.