Sorry if this is a bit long. It started as a simple question, but then I started to rant a bit. Decided to keep my rant, maybe someone here can relate.
I want to make a 2d RPG that is entirely made of pre-drawn backgrounds and sprites. I want the look to be similar to zelda, final fantasy, secret of mana, legend of mana games like that. I want to make a dynamic turn based battle system that is not boring and fun to look at (though that's just words to someone who can't see it).
In case you don't want to read all of this, I'm just looking for some advice, where to start (not just a link to some, generic vague tutorial made for people who have been coding for years and have cyborg implants in their brains), and wondering if there are any good tutorials out there (I'm here asking this after watching many coding tutorials, and about 3 days of searching and viewing LOVE tutorials). I know this question is asked in **every forum in the entire web**, but I ask this because I'm not looking for the first search that comes up on google or these forums. I'm wondering if anyone actually knows of a real tutorial that actually walks you through the entire game making process / helps turn your dreams into reality. I just did the GameDev For Beginners Tutorial Series, but that tutorial, while I appreciate the time it took the author took to make it, is just another tutorial that starts out small, understandable and beginner friendly, and then in the final video it is not beginner friendly, and you are lost.
To be honest I'm feeling a bit jaded. I've wanted to make a game since I was a kid. I can create art/sprites, I can make music, I can write stories/come up with game concepts... the one thing I could never grasp naturally is coding... seriously wtf? You can ask someone how to cook a meal, you can ask someone how to drive a car... Try to find information about coding on your own and forget it, even if you find a good series of tutorials the learning curve starts out pretty level. You learn about variables, functions, classes, data types, operators. Yes this makes sense. The game loop, yes, this makes sense, then when you get to the critical information, the information that actually makes a game, the learning curve skyrockets, and explanations seemed rushed and the tutorial is over.
this is pretty much the amount of experience I have with coding.
Like I mentioned I've learned about variables, functions, classes, data types, operators. and that a game runs through a loop, getting input, updating the game, then checking for inputs again.
Long story short I've been trying to learn coding since I was in highschool.. and only recently, upon discovering python and pygame I was able to get a slight grip on it.. not a firm grip or else I wouldn't be typing this... but for the first time I learned about the game loop and how a game updates itself to make animation. I was able to throw one of my backgrounds up on teh screen and havemy sprite walk around, facing in all the proper directions and everything. After working with some great pygame tutorials I discover, from the author of the videos that it's not really ideal for distribution (great). LOVE2d was suggested, and here I am. I was told that lua/LOVE2d is a bit like python.... but, coming from a beginner, it is not, there are so many things that are written differently and I feel like I'm relearning everything. Sometimes I wish I didn't to have such a difficult dream, but this is my passion in life, and like a crazy person, I keep coming back to this.
again, I'm not a natural at coding, and I hate following tutorials that lead you astray, but I love video games, and I love what you can do with the power of coding, enough to keep trying. I guess that means I believe in myself.
Anyway, sry for the rant. thanks for reading all of this if you did. It's pretty late here so I'm hoping I wrote all of this in a coherent way.
Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
- yougetagoldstar
- Prole
- Posts: 13
- Joined: Wed Feb 08, 2017 7:49 am
- zorg
- Party member
- Posts: 3465
- Joined: Thu Dec 13, 2012 2:55 pm
- Location: Absurdistan, Hungary
- Contact:
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
Hi and welcome to the forums!
It was 10 AM my local time, when you posted this. It's now noon and i'm cooking my lunch. I "suck" at art, but i do make neat music, though all of them are unfinished unless i get inspired. And i can code, and have an affinity for coding, but when i start doing bigger things, more often than not do i grind to a halt at a point, and then i need to redesign everything. I'm like that.
Point is, "variables, functions, classes, data types, operators" are nice things to know, along with how games run (in a loop, kinda), and how the input can work; it's not enough though. I mean, what did you learn about those things specifically?
And more important, in which language?
Python?
Programming languages might be similar on the surface, but even Python and Lua, both dynamic/scripting ones, have tons of differences. In python, indenting the code is important, since that defines blocks; that's a rarity, since most other languages use syntax ({ and }; or do/then ... end) to define them. Variables hold data, Functions are things you call with or without parameters so that they either return something, or they don't.
Can a variable hold a function?
In lua, yes.
You mentioned datatypes; do you know what pointers/references are? in general? in lua? Tables, functions, even strings are technically pointers (it's a bit more complicated for strings though). Operators are also language dependent; in contrast with C and the like, lua doesn't have compound assignment operators (+=, *=, -=, /=, etc.). Lua also lacks any class system whatsoever, because it's dynamic, it doesn't care about datatypes as a whole. You pass math.floor a string? you can, except it will error, but not because it can't pass it into the function, but because math.floor is not written to accept it. Big difference. A better example would be that in lua, you could write a function that would act differently depending on what datatype you passed to it; you wouldn't need to define the same function for different datatypes (you couldn't, lua can't distinguish based on the functions' parameter lists alone, unlike C).
So, no classes, how do you do Object Oriented programming then?
However you want.
There are many libraries out there; middleclass, 30log, classy, etc.; all of them providing similar things that you'd expect from the OO paradigm. Some may use metatables, but even that's not really needed... depends on what you want to optimize for really.
[wiki]love.run[/wiki] is the game loop here. Pretty straightforward, call love.load once, then in a loop, read events, call love.update, call love.draw, sleep some time, repeat until terminated.
To be honest, i never liked watching tutorial videos, for me, people do things too unfamiliarly to me, so i can't give my input on them skyrocketing at the last steps or not; I'd rather read the PiL (Programming in Lua) that's online (though it's for either 5.0 or 5.1, might contain a few things that you shouldn't use with LÖVE), or the wiki, so i could see how the framework itself works.
To be honest, having a lot of possibilities may just be more pressuring than actually having limits; an engine like Unity has defined ways to do things; similarly, the rules are stricter with, let's say C++ or Java; LÖVE is a framework, it grants you plenty of leeway, just like how lua allows you tremendous amounts of freedom. Having freedom is hard.
tl;dr (in short): Yes, you kinda have to re-learn the coding bit, because, you know, lua isn't python. But after learning one language, it shouldn't be too hard to learn another, especially when there are languages even more dissimilar to both. The other thing is, even if you did follow tutorials, those people are only human too; to trust them blindly is asking for trouble. There are many ways to code one thing, and while there are worse ways, there are better ways as well. It depends on a lot of variables. For you to function as a coder, i'd keep being classy and ... okay, i can't incorporate operators and datatypes into this sentence... oh well.
It was 10 AM my local time, when you posted this. It's now noon and i'm cooking my lunch. I "suck" at art, but i do make neat music, though all of them are unfinished unless i get inspired. And i can code, and have an affinity for coding, but when i start doing bigger things, more often than not do i grind to a halt at a point, and then i need to redesign everything. I'm like that.
Point is, "variables, functions, classes, data types, operators" are nice things to know, along with how games run (in a loop, kinda), and how the input can work; it's not enough though. I mean, what did you learn about those things specifically?
And more important, in which language?
Python?
Programming languages might be similar on the surface, but even Python and Lua, both dynamic/scripting ones, have tons of differences. In python, indenting the code is important, since that defines blocks; that's a rarity, since most other languages use syntax ({ and }; or do/then ... end) to define them. Variables hold data, Functions are things you call with or without parameters so that they either return something, or they don't.
Can a variable hold a function?
In lua, yes.
You mentioned datatypes; do you know what pointers/references are? in general? in lua? Tables, functions, even strings are technically pointers (it's a bit more complicated for strings though). Operators are also language dependent; in contrast with C and the like, lua doesn't have compound assignment operators (+=, *=, -=, /=, etc.). Lua also lacks any class system whatsoever, because it's dynamic, it doesn't care about datatypes as a whole. You pass math.floor a string? you can, except it will error, but not because it can't pass it into the function, but because math.floor is not written to accept it. Big difference. A better example would be that in lua, you could write a function that would act differently depending on what datatype you passed to it; you wouldn't need to define the same function for different datatypes (you couldn't, lua can't distinguish based on the functions' parameter lists alone, unlike C).
So, no classes, how do you do Object Oriented programming then?
However you want.
There are many libraries out there; middleclass, 30log, classy, etc.; all of them providing similar things that you'd expect from the OO paradigm. Some may use metatables, but even that's not really needed... depends on what you want to optimize for really.
[wiki]love.run[/wiki] is the game loop here. Pretty straightforward, call love.load once, then in a loop, read events, call love.update, call love.draw, sleep some time, repeat until terminated.
To be honest, i never liked watching tutorial videos, for me, people do things too unfamiliarly to me, so i can't give my input on them skyrocketing at the last steps or not; I'd rather read the PiL (Programming in Lua) that's online (though it's for either 5.0 or 5.1, might contain a few things that you shouldn't use with LÖVE), or the wiki, so i could see how the framework itself works.
To be honest, having a lot of possibilities may just be more pressuring than actually having limits; an engine like Unity has defined ways to do things; similarly, the rules are stricter with, let's say C++ or Java; LÖVE is a framework, it grants you plenty of leeway, just like how lua allows you tremendous amounts of freedom. Having freedom is hard.
tl;dr (in short): Yes, you kinda have to re-learn the coding bit, because, you know, lua isn't python. But after learning one language, it shouldn't be too hard to learn another, especially when there are languages even more dissimilar to both. The other thing is, even if you did follow tutorials, those people are only human too; to trust them blindly is asking for trouble. There are many ways to code one thing, and while there are worse ways, there are better ways as well. It depends on a lot of variables. For you to function as a coder, i'd keep being classy and ... okay, i can't incorporate operators and datatypes into this sentence... oh well.
Last edited by zorg on Wed Feb 08, 2017 12:20 pm, edited 1 time in total.
Me and my stuff True Neutral Aspirant. Why, yes, i do indeed enjoy sarcastically correcting others when they make the most blatant of spelling mistakes. No bullying or trolling the innocent tho.
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
Hi yougetagoldstar,
It seems obvious to me that one shouldn't take advice from people who haven't done the thing that one is looking for advice on how to do. I have never made a proper game, so you shouldn't read this post any further.
However, your post resonated with me, so I'd like to share some things that I think I've learned. All just my opinion, of course.
Number 1: The tutorials and learning resources that people have made for game programming are generally not very good (I won't guess as to why, but it's interesting to think about). It seems that people make games despite the learning resources available rather than because they are so good.
If you assume that the learning resources are good, you might feel dumb because none of them really make sense to you (like with the skyrocketing learning curves that you mentioned), or you might feel like there's some amazing tutorial that everyone else has read but you haven't found yet.
Number 2: There probably isn't going to be a perfect "how to program a <insert game type that you want to make> game tutorial". At first I was surprised at the lack of tutorials specifically for, say, RPGs, first-person shooters, real-time strategy, non-real-time strategy, racing games, sports games, etc. etc. etc. I thought "if there isn't a tutorial on how to make these games, how does anyone find out how to make them?"
My understanding now is that there are some fundamental programming techniques and ways of thinking about things, and if you are practised with them then you can make whatever you want to make, or at least have a good idea about what you'll need to do and learn to figure out how to make it.
I think of it like painting. You probably won't find individual tutorials on how to paint everything in the world that could be painted. But if you learn some basics about color, lighting, paint, brushes etc., you can paint whatever you want.
So, I would suggest not being too caught up on just "2D RPG programming", because I don't think there's that much "2D RPG" specific stuff to learn. Try some small games as well because you'll learn things. I know this is common and very not fun advice.
Number 3: I'd suggest not getting caught up in "architectural" things. Your post didn't mention this, but I thought I'd mentioned it preemptively because you'll hear lots of talk about OOP and ECS and putting things in different files and this and that. This is all additional stuff on top of what your game is fundamentally doing. I don't want to say that this stuff is good or bad, but it's easy to get caught up in when it's not necessary for making a game, and I found it a distraction, I felt like I "didn't know the proper way to program" because I wasn't doing things a certain way.
The only thing I would suggest to do right from when you're getting started is to put things that you use more than once in variables/functions. Related: this series of articles made sense to me.
I made a tutorial series based on not doing any fancy architectural stuff and just making things piece by piece using variables and functions when stuff gets duplicated.
Number 4: You don't need to learn all of Lua or LOVE to make something. If you can get some input from the keyboard and draw text and images on the screen, that's basically all you need to get started. You also won't need Lua's coroutines or metatables to make a game. I found that I got caught up trying to learn everything before trying to make anything.
All that said, have you checked out How to Make an RPG? I don't know anything about it other than what's on the homepage, but who knows, maybe it's the ultimate tutorial for turning dreams into reality.
Handmade Hero is a 2D RPG tutorial which shows you all of the steps of making a game starting from nothing. However it's very "low level", and this might not be what you want. Still, it's the only "good" learning resource I've ever come across, due to the expertise and communication skills of the teacher, the ambitiousness of the project, and the concept of the project itself.
It seems obvious to me that one shouldn't take advice from people who haven't done the thing that one is looking for advice on how to do. I have never made a proper game, so you shouldn't read this post any further.
However, your post resonated with me, so I'd like to share some things that I think I've learned. All just my opinion, of course.
Number 1: The tutorials and learning resources that people have made for game programming are generally not very good (I won't guess as to why, but it's interesting to think about). It seems that people make games despite the learning resources available rather than because they are so good.
If you assume that the learning resources are good, you might feel dumb because none of them really make sense to you (like with the skyrocketing learning curves that you mentioned), or you might feel like there's some amazing tutorial that everyone else has read but you haven't found yet.
Number 2: There probably isn't going to be a perfect "how to program a <insert game type that you want to make> game tutorial". At first I was surprised at the lack of tutorials specifically for, say, RPGs, first-person shooters, real-time strategy, non-real-time strategy, racing games, sports games, etc. etc. etc. I thought "if there isn't a tutorial on how to make these games, how does anyone find out how to make them?"
My understanding now is that there are some fundamental programming techniques and ways of thinking about things, and if you are practised with them then you can make whatever you want to make, or at least have a good idea about what you'll need to do and learn to figure out how to make it.
I think of it like painting. You probably won't find individual tutorials on how to paint everything in the world that could be painted. But if you learn some basics about color, lighting, paint, brushes etc., you can paint whatever you want.
So, I would suggest not being too caught up on just "2D RPG programming", because I don't think there's that much "2D RPG" specific stuff to learn. Try some small games as well because you'll learn things. I know this is common and very not fun advice.
Number 3: I'd suggest not getting caught up in "architectural" things. Your post didn't mention this, but I thought I'd mentioned it preemptively because you'll hear lots of talk about OOP and ECS and putting things in different files and this and that. This is all additional stuff on top of what your game is fundamentally doing. I don't want to say that this stuff is good or bad, but it's easy to get caught up in when it's not necessary for making a game, and I found it a distraction, I felt like I "didn't know the proper way to program" because I wasn't doing things a certain way.
The only thing I would suggest to do right from when you're getting started is to put things that you use more than once in variables/functions. Related: this series of articles made sense to me.
I made a tutorial series based on not doing any fancy architectural stuff and just making things piece by piece using variables and functions when stuff gets duplicated.
Number 4: You don't need to learn all of Lua or LOVE to make something. If you can get some input from the keyboard and draw text and images on the screen, that's basically all you need to get started. You also won't need Lua's coroutines or metatables to make a game. I found that I got caught up trying to learn everything before trying to make anything.
All that said, have you checked out How to Make an RPG? I don't know anything about it other than what's on the homepage, but who knows, maybe it's the ultimate tutorial for turning dreams into reality.
Handmade Hero is a 2D RPG tutorial which shows you all of the steps of making a game starting from nothing. However it's very "low level", and this might not be what you want. Still, it's the only "good" learning resource I've ever come across, due to the expertise and communication skills of the teacher, the ambitiousness of the project, and the concept of the project itself.
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
yougetagoldstar, there should be a couple 2d topdown rpg games made with LOVE2D already. Check out rm-code's On the Roadside as well as my Veins of the Earth port. Both are open source, so just take a look!
As zorg said, all you need to start is knowing how to draw on screen and get input in LOVE2D.
As zorg said, all you need to start is knowing how to draw on screen and get input in LOVE2D.
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
yougetagoldstar,
I don't think LÖVE is the easiest on-ramp to programming, though I *think* it would work provided you have a personality that works well with lots of freedom and you're willing to jump in the deep end and ask lots of questions and try stuff before you fully understand them, but if I were first starting out with programming, it wouldn't be where I would start (though it is where I would end). IMO, the best way to learn to program is to get lots of practice doing simple things until your brain fully absorbs them and you don't feel completely lost moving on to building more complicated things on top of those simpler things.
LÖVE is open-source, which means it is free (yay!), and is a contributing factor in why it is so flexible, powerful and open-ended, but it also means that it is made by programmers for programmers.
But LÖVE doesn't provide many "rails to run on", it is so open and flexible, it is like a completely blank canvas and it's easy to get sucked down rabbit-holes of programming problems and it's hard (for a beginner) to stay focused on very simple code focused on building a game without getting sucked into programming problems.
I know this may go against the advice of others here, but to be honest, if I were starting out, I would make my first game in GameMaker, before moving on to LÖVE. GameMaker gives you great rails to run on, it is the opposite of a blank canvas. You're still programming, but you almost don't notice because it feels like you're just building your game and you're just doing little snippets of code here and there -- GameMaker provides the structure for you. Then, once you've made a game there, you can move on to LÖVE and you'll have a feel for the general structure and the code and how to make a game with collisions, fighting, movement, etc.
GameMaker has two sets of official video tutorials, one that walks you through making an Asteroids game, and another that walks you through making a Platformer. I would encourage you to walk through both tutorials -- not just watching them, but actually following along and writing the code and building the games on your own while you watch the videos. It may feel tedious to actually code your way through the tutorials, but once you've made an asteroids clone and a platformer (following the video tutorials), you'll have a practical, working knowledge of how to build an RPG like Zelda -- all the building blocks are there.
I feel like a walking GameMaker advertisement or something -- I have no connection to the company or anything and I prefer LÖVE myself, but I had my son (who was 10 at the time) go through both of the GameMaker video tutorial series and I did some of them myself and I thought they were a really good on-ramp for someone new to programming.
I don't think LÖVE is the easiest on-ramp to programming, though I *think* it would work provided you have a personality that works well with lots of freedom and you're willing to jump in the deep end and ask lots of questions and try stuff before you fully understand them, but if I were first starting out with programming, it wouldn't be where I would start (though it is where I would end). IMO, the best way to learn to program is to get lots of practice doing simple things until your brain fully absorbs them and you don't feel completely lost moving on to building more complicated things on top of those simpler things.
LÖVE is open-source, which means it is free (yay!), and is a contributing factor in why it is so flexible, powerful and open-ended, but it also means that it is made by programmers for programmers.
But LÖVE doesn't provide many "rails to run on", it is so open and flexible, it is like a completely blank canvas and it's easy to get sucked down rabbit-holes of programming problems and it's hard (for a beginner) to stay focused on very simple code focused on building a game without getting sucked into programming problems.
I know this may go against the advice of others here, but to be honest, if I were starting out, I would make my first game in GameMaker, before moving on to LÖVE. GameMaker gives you great rails to run on, it is the opposite of a blank canvas. You're still programming, but you almost don't notice because it feels like you're just building your game and you're just doing little snippets of code here and there -- GameMaker provides the structure for you. Then, once you've made a game there, you can move on to LÖVE and you'll have a feel for the general structure and the code and how to make a game with collisions, fighting, movement, etc.
GameMaker has two sets of official video tutorials, one that walks you through making an Asteroids game, and another that walks you through making a Platformer. I would encourage you to walk through both tutorials -- not just watching them, but actually following along and writing the code and building the games on your own while you watch the videos. It may feel tedious to actually code your way through the tutorials, but once you've made an asteroids clone and a platformer (following the video tutorials), you'll have a practical, working knowledge of how to build an RPG like Zelda -- all the building blocks are there.
I feel like a walking GameMaker advertisement or something -- I have no connection to the company or anything and I prefer LÖVE myself, but I had my son (who was 10 at the time) go through both of the GameMaker video tutorial series and I did some of them myself and I thought they were a really good on-ramp for someone new to programming.
- zorg
- Party member
- Posts: 3465
- Joined: Thu Dec 13, 2012 2:55 pm
- Location: Absurdistan, Hungary
- Contact:
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
The only thing i'd disagree with is that in my opinion, neither asteroids nor a platformer necessarily have every element that an rpg game like zelda would have; the tutorials might include them, but it's still different enough.peterrust wrote:...
Me and my stuff True Neutral Aspirant. Why, yes, i do indeed enjoy sarcastically correcting others when they make the most blatant of spelling mistakes. No bullying or trolling the innocent tho.
- yougetagoldstar
- Prole
- Posts: 13
- Joined: Wed Feb 08, 2017 7:49 am
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
Thanks for these replies everyone. I guess I had to get frustrated with all of this sometime. I've never had a guide when it comes to programming/game making, no friends, no family who are into this stuff, so the idea that all the time I've spent learning "x" was all for nothing sometimes gets to me. I'm sitting here working a job I hate, living around people I hope to one day never see again, and all that's keeping me going is this damned dream that doesn't even exist yet.
I guess I'll just continue to soak up whatever information I can find. Hopefully it's all leading up to something, but I hate that I'll never know if until I actually find myself making a fun and engaging game. I'll check out all the info you guys provided.
If anyone else has any more advice please feel free to add to this. I need all the help I can get.
I guess I'll just continue to soak up whatever information I can find. Hopefully it's all leading up to something, but I hate that I'll never know if until I actually find myself making a fun and engaging game. I'll check out all the info you guys provided.
If anyone else has any more advice please feel free to add to this. I need all the help I can get.
- Positive07
- Party member
- Posts: 1014
- Joined: Sun Aug 12, 2012 4:34 pm
- Location: Argentina
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
I learned Python once too, and I thought it was all for nothing, I learned a little of JavaScript once thinking it was similar to Lua, and I thought it was useless. Recently I coded a Python script to build my LÖVE games, and programmed an entire app with JavaScript, I also made my site and JavaScript came to good use.
Also learning new languages sparks interest in different paradigms that no one may have tried before in Lua. Maybe you find a language that you find better than Lua. Who knows?
Learning a different programming language than what you are using is not a bad thing! I can guarantee that you haven't wasted your time. Also some of the knowledge transposes to Lua, if statements are if statements, for loops are for loops... they change a little and you need to learn how, but when you read the PiL or the manual you will probably be like "Hey this is similar to how python does such stuff"
Keep it up, make small prototypes, if you can move an image around the screen you already have a part of your game, now make the background move instead, try to use tiles instead of a single image, implement some collisions using Bump or a similar library... make little stuff and you'll eventually get there!
Also learning new languages sparks interest in different paradigms that no one may have tried before in Lua. Maybe you find a language that you find better than Lua. Who knows?
Learning a different programming language than what you are using is not a bad thing! I can guarantee that you haven't wasted your time. Also some of the knowledge transposes to Lua, if statements are if statements, for loops are for loops... they change a little and you need to learn how, but when you read the PiL or the manual you will probably be like "Hey this is similar to how python does such stuff"
Keep it up, make small prototypes, if you can move an image around the screen you already have a part of your game, now make the background move instead, try to use tiles instead of a single image, implement some collisions using Bump or a similar library... make little stuff and you'll eventually get there!
for i, person in ipairs(everybody) do
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
[tab]if not person.obey then person:setObey(true) end
end
love.system.openURL(github.com/pablomayobre)
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
Can you expand on that a little? It sounds like you have the basics down and are having some trouble putting it all together, but I also get the impression that you feel there's some specific concept that's not being covered adequately. I know it's not easy to do without being more familiar with whatever that concept is, but can you try to explain what exactly you're getting stumped on?yougetagoldstar wrote:then when you get to the critical information, the information that actually makes a game, the learning curve skyrockets, and explanations seemed rushed
Re: Want to make a 2d top-down or angled RPG. Starting out, could use some advice.
Who is online
Users browsing this forum: No registered users and 2 guests