HiddenCreature wrote:
@philat
The point is people are trying to learn Ren'Py, not necessarily Python. Ren'Py doesn't utilize every possible feature Python has. So people here only want to learn as much Python that is relevant, to what they're trying to do for their novels.
If I want to learn how to show images and make basic dialogue, I can either read the Ren'Py quickstart guide which is right to the point. Or I can wait a few lessons on Code Academy before I learn how to make say statements.
If people want to make a combat system, they are going to have to learn some Python, whether they want to or not. But some people don't actually want to learn, they just want code that works without learning how to make it...or even checking the documentation. So many people just grab some code they found somewhere without knowing how it works and just plug it into their games...then come to the message board when it doesn't work asking for someone to fix it for them. Again, without checking documentation or trying to learn the code. That isn't the fault of Ren'py not being user friendly. That is a clash of expectation. They want plug-n-play. In which case...I think there are other VN languages that might be better suited...languages where you don't have to know any code at all (theoretically, but I'm skeptical of that).
People sometimes barely know how to make a say statement and they want to know how to make a Inventory system and combat system and dress up game, etc right out of the gate. That isn't the fault of Renpy not being user friendly, that is people wanting to do things way out of their knowledge base without wanting to learn the steps in between.
One of the questions I see over and over again is for an inventory system. As if it is the most difficult thing in the world and Renpy is user unfriendly for not explaining it. But an inventory system can be dead easy. At its most basic it is just:
Code: Select all
$ backpack = set()
$backpack.add("Rope")
$backpack.add("Sword")
$packpack.add("Health Potion")
But a number of folks haven't done that work to understand what an int or a string or a set is (which is Python) and complain Renpy is user unfriendly.
Should the Renpy tutorial explain to people the basics of Python? Explain how to make classes and functions? Explain what a string it? When the CodeAcademy does all of that really well already? I don't know. Maybe? But even if people did, would people actually read it?
So, maybe there needs to be tutorials that are extremely basic like what I did in response to the thread "Explain to me like I'm 5: Inventory System"
http://lemmasoft.renai.us/forums/viewto ... =inventory
I haven't had time to put that in the cookbook yet...but I will at the end of the month after I finish my tenure packet.
Look over that thread and note the sorts of errors being made. Some of them are about not understanding the basics of Python. Some of them are about copying code without understanding what it does. Some of them are about not understanding flow of code. Some are about spelling errors. Some of it is about not having learned how to problem solve and think through what they want in steps (flow charting) to figure out what they need to do. None of that is really about Renpy.
When I wrote that series of posts, I had time (was procrastinating) and didn't mind doing it. I'm planning on doing more of those when I have time. But I can imagine a lot of experienced coders don't want to make tutorials like that. (I'm thinking of doing a tutorial for screen language elements in the future, because I have fun doing it). But even if I did it, would be people read it? There seem to be quite a large number of people who don't actually want to read tutorials, they don't search the message boards, they just want their game to do whatever they want it to do without having to read anything.
But a larger issues seems to be not thinking methodically from a to b. Not recognizing the way that there is often many ways to get an answer depending on what you want to do...but you have to know what you want to do.
Let's take an example of what I mean.
Someone will post to the Questions section something like: "I'm brand new to Renpy, I want to create a turn-based combat system like in this AAA game I played, can someone show me how to do that, with working code that I could put in my game? Renpy is not user-friendly because it doesn't have a tutorial on how to do that!"
Woah! Um...there are a thousand different ways to make a turn-based combat system. How do you want your combat system to work? I mean, specifically? People ask and they haven't answered that basic question yet. If they built a plain language flow chart of how they wanted combat to work, they could probably figure it out themselves--assuming they know how to made a class, a function, and use numbers...which the CodeAcademy course will teach them,
Have I done a combat system yet? Not really. I've done some basic, basic menu based things to explain concepts to folks in the message boards. Yet, I don't think the actual coding part for something more complex would be that difficult. But it is the conceptualization of the system *which has nothing to do with coding yet* which takes time. Something most people asking haven't done.
But were I to make a detailed combat system (and one day I will) I'd have to start by working it conceptually.
Okay. I want players to have hit points. Do I want hit locations? Do I want hit points per hit location or damage thresholds per hit location?
Do I want crippling rules? If a person has a limb crippled, what game effect to I want that to have? Do I want there to be negative effects if you are under 1/2 your hit points? Under 1/3?
Do I want bleeding rules? Do I want stun or knockout? How do I want to do death? Automatically at 0hp? or at -HP?
Do I want non-lethal ways of disposing of enemies?
Do I want options to involve attacking only or do I want also defense options?
Do I want this to be on a map and use facing and a distance? Do I want weapon lengths? Or do I want this to me more abstract?
Do I want players to have fatigue points? What would they use them for? Magic? Extra effort in combat?
Do I want magic? How would that work?
Do I want people to be able to use non-combat skills like Intimidate or Fast Talk?
Do I want movement?
How do I want to resolve attacks and defenses? Straight up comparison of attack vs. attack? attack vs. defense? Do I want a die roll? 3d6 for a nice bell curve? 1d20 for...not a nice bell curve? Do I want contested rolls? Or no contested rolls?
Do I want the player to have team mates? Do I want the team mates to do their own thing (which I'd have to program) or do I want the player to be able to control the team mates?
There are a lot of questions...and they have to be answered before the coding can even start. This is almost never done. Same thing with inventory. People ask about how to make an inventory system...but, again, there are conceptual questions not answered.
Do you just want a list of things you have on your person? That's easy. See above.
Do you also want to track the cost of those things and how much money you have?
Do you want to be able to buy and/or things at stores? Do you want to the price to fluctuate based on factors like scarcity/surplus? Or Haggling skill?
Do you want to track encumbrance? If you do then you need to track weight...and how much a person can carry. Do you want to not allow someone to carry more than their weight limit? Do you want to have penalties for carrying too much? What sort of penalties? Do you want levels of encumbrance penalty?
Do you want to track the carrying capacity of each container so that they can't fit more that so many pounds in a backpack or in a pouch?
Do you want to track where on the body a person is carrying things--and then limit items per carrying location?
Do you want to track how much the gold coins weigh?
Do you want to track if something was stolen or not?
You can make an inventory dead simple:
Code: Select all
$ backpack = set()
$backpack.add("Rope")
$backpack.add("Sword")
$packpack.add("Health Potion")
Or it can be really complex. But before the coding is worried about the system has to be conceptualized. If it is fully conceptualized I find the coding is relatively easy. But people often don't take the time to conceptualize. It is all rush, rush, rush. Is that a problem of Ren'py not being user friendly? No.
So how to teach people to slow down, read things, conceptualize, and break things down into smaller pieces?
All of that said, I do agree with Onishion that there could be more examples in the documentation. I mean when I was working on the Bar Tutorial Like I'm a 5 year old (which I haven't released yet because I want to do more on it) I decided to use every element documented about bars I could find. I got everything working except for really seeing how I could create complicated custom BarValues--Like a bar that you can adjust manually, but that also is animated when it adds or subtracts numbers some other way. And I asked about that one thing and no one could explain how to do it. So...what is the point of making your own custom BarValue if I can't do anything besides reproduce the already defined BarValues (like Animated Value, etc)? And example would have been nice. But if I figure it out...I'll make that example!