You should really learn Python.

As someone who makes BGE video tutorials (with relative frequency), I get a lot of messages from people who watch my videos. Most of them could be categorized as kind words of encouragement. Others are legitimate questions about what I did, and for what reason.

But, there is also this very bizarre third category; Questions where it’s painfully obvious that the person asking knows next to nothing about Python.

I would respond to these questions with the following: “This tutorial assumes that you understand Python fairly well, so you should learn that first.”. While this does seem to work, initially, I still continue to receive similar questions, and in many cases, from the very same people.

So, since “person-to-person” messages don’t seem to carry the same level of “seriousness” as a public post, I’m inclined to make my point with the latter:

If you want to make ambitious games with the BGE, you have to learn Python, and you have to learn it well.

I’m sorry, but there’s just no way around that. Simply using scripts that others wrote can only get you so far. Eventually, you’ll have to actually understand what you’re using (maybe not completely, but to a very large extent), and you can only do that if you know the language.

Learning how to program is difficult, and it takes significant time, but it’s something most people are quite capable of doing. From the official python tutorial, to my brand new Python 3 video tutorial series, the net provides a stunning wealth of quality material.

Use it!

This is an all too familiar topic, and is a question I get asked a lot. “How can you do this with only using logic bricks” If you want decent results python is definitely the way to go. if you legitimately cant code, find someone who can while you work on the more visual aspects of your project, however I do firmly believe that Python is very forgiving despite its debugging capabilities and is more than easy enough to learn if you find the right sources as you have pointed out Goran.

My 2 Cents.

I also agree. I think while only using logic bricks is fine if you just want to use the BGE as a toy or something simple, but if you want to make professional, high-quality, bug-free games, learning Python and using it correctly is the way to go.

I agree, and how to get good performing code,
i see a lot of massive and excessive “for” looping that can be just 1 list comprehension.

I can tell learning Python is really not that difficult. Two years ago, I had almost no knowledge about Python. Nowadays, I can tell I know how to do simple scripts this because of learning with help of this community, books and good video tutorials. So it just takes some time. Go for it.

Hmmm,

You are right if you want to explain, demonstrate, teach the internals of your code.

But there is another perspective on this. A lot of users have this perspective. A lot of BGE Python programmers have this perspective. (I think this is the source for this “one-script”-demand ;))

This is the Ready-To-Use perspective.

It means users expects “blocks” to plug them together to a larger thing (game). Like the LEGO concept.
So the user expect to grab a “block” and put it somewhere on the other “blocks” without the need to care how the block looks inside.
This is indeed a good expectation and it speeds up development pretty much. But this can only work if the “block” is designed that way.

The BGE’s SCA fits pretty much into this expectation. It provides a high level of abstraction (e.g. the user does not need to care the details of playing actions).

It still provides the ability to reduce the level of abstraction by using Python to create your own “Block”. When doing this you need to care all the little details. But the user of your custom “block” does not want to care.

In other words well designed Python code python code does not expects the user to change it just to plug it in his project (regardless what project that is).

Just think about this:

  • If you change the code, you need to understand the code
  • if you understand the code, you can write your own code
  • if you can write your own code, why should you use code from others that does fit?

Compared to a car:
If you want to drive to cinema, you do not want to pull and push things under the engine hood. You prefer to use the steering wheel, pedals, gearshift lever, light switch and so on.
You would expect a customized “super-gadget” to plug into the excisting user interface, rather than forcing you to crouch under the car :D.
A driver does not need to know how to build a car. He just needs to know how to drive.

if you can write your own code, why should you use code from others that does fit?

That’s the best point. I always write my own code. If I don’t know something, I search for a tutorial or ask here for help but after I recode it on my own way.

Learn to Compile your Python for Speed, why not: http://nuitka.net/pages/overview.html

You all make good points, and many of you have helped me with some of my questions and problems. It would be great to learn Python and to solve problems on ones’ own. However, even though I (and I assume many others) have searched and searched, the information is not always easy to get. For example, it took me a while, and a lot of explaining from some of you, that Python, Python for Blender, Python for the Game Engine, BPY and BGE are not all the same. Add to that some syntax changes in different Blender releases and it gets quite confusing. Certain things work (or not) in these various ‘flavors’ of Python, or have to be called/used/coded quite differently. And that, for me (and probably for others) is the problem. There is really no reference that starts from the ‘ground up’ to explain all this, or to give examples of the syntax to use for each variety of Python. Nearly all the tutorials, whether written or videos, assume that the reader or viewer has some level of understanding. So what I’m saying is these tutorials often start sort of at a middle level, and it’s not easy to follow. To use Monster’s car analogy, what if someone gave you directions to go to the cinema? “Turn left, go one mile then turn right, then second left and you’re there.” Only problem, they didn’t tell you which car to take, nor where it was parked so you don’t know where you were starting from! I certainly don’t mean to criticize, and believe me I appreciate all the help I have gotten here, but I just want to show how difficult it can be for a total beginner. Thanks to all of you.

with only brick you can do brick-game

instead of thinking of a game and then put the bricks, you’d think the bricks and so make the game

I agree totally, Python is needed for complex games. I have been slowly making my game for a few years, and using this to learn Blender and Python well with varying success.

I think beginners like me are spoilt for choice with such a diverse forum like this to search, as nearly every problem has a solution here. Its also great as many people offer great help too. The only missing ingredient for the learner is patience and a willingness to go the extra mile as I have seen so many projects die.

Like some others here, I do feel a little ‘dirty’ for using code I do not understand, and endeavour to at least try and see how it works. Other times, I have had others like Marco re-write scripts and this has been great as I can see how organisation plays an important role. As my project gets bigger, I use this guidance (plus what others like Monster teach) to make my project the best it can be.

I may never finish my first game, but as I make it and understand how Python works I can see how other games can be made, and use this in the future. I often chuckle at how far I have come (and cry a bit about how far I need to go too!).

Personally, all I can say is that like most others here, the best I could do was either create something that used just logic bricks or create something based on a template and expand from there with logic bricks (with the occasional tweaking of values in the code since I didn’t know how to do any serious editing to the scripts).

Once I really started to get a grasp on writing Python, I can tell you that it was a liberating experience, in which I was able to axe the majority of the logic bricks used in my projects and increase the complexity of the logic along with making it work like one would expect, and over the last few years it just gets better as I learn better and more complex python techniques, learn about general python functions bundled with Blender that aren’t part of the BGE API, and learn how to top it off by optimizing the logic in ways that aren’t possible with logic bricks.

All in all I would be in agreement that if you want to make truly complex games with sound logic, then you should learn Python. The resources out there means that you don’t even have to purchase anything, because for my case, my ability to use Python started with Cthames excellent doc. site (www.tutorialsforblender3d.com), and continues with the use of the Blender Python docs. and the Python.org reference.

Python is simply a language, and if one does not understand then it might be considered a foreign language. Some learn from research and reading; some may learn from watching and listening to tutorials; moreover, some may ask a lot of questions, and/or some may even learn from copying others. In any case, everyone learns by their own ways that work best for themselves. Although, as with any language, the more it is studied, the more it is understood.

This is indeed true. I always forget to mention the BGE version my examples are design to run in.

A lot of tutorials do not do this either. I can imagine this leads to a lot of problems when others try to follow it especially when using a different version.

I also had some trouble to get the information I needed, especially with calls and their elements, i.e. object.worldOrientation. Most of the time I’m finding the answers to my problems on the forum. Sometimes there is some confusion due to syntax changes. Also Goran’s tutorials are a great help to me. In a year I’ve learned a lot of exciting things.

I’m looking forward to learn from your new tutorial series, Goran! Thanks a lot!

Noob(maybe a bit more than that) here,but but i can say python is great. (I am scripting my whole game by myself)

Only if he wants to drive a standard car, at standard speeds. But that’s not what he wants.

He wants to drive some exotic, plutonium-powered monstrosity, at 1000 km/h.

The only way to drive that car is to build it first, or to get someone else to build it for you, because that car doesn’t exist. :wink:

I agree with this. I had quite a bit of trouble when I first was learning Python for BGE, though I had no prior coding experience. I think there’s some need for a beginner friendly tutorial series that assumes only very basic Python knowledge(basic data types and operations, functions, and classes), and builds a knowledge of how to use Python to interface with the BGE, starting with the very basics, by not only working on specific examples, but by explaining all the basics of BGE’s Python API as well?

Maybe there’s a tutorial like this out there?

Even then he just needs to know how to drive this car, not how to build it. I agree it can be an advantage to know about the construction.

therefore you need a good mechanic first ;). He does not need to drive just to build. If he is good he builds the car in a way that the driver can concentrate on driving. (teamwork)

In a one-man team both roles are combined in one person.

:smiley:

therefore you need a good mechanic first ;). He does not need to drive just to build. If he is good he builds the car in a way that the driver can concentrate on driving. (teamwork)

In a one-man team both roles are combined in one person.

:smiley:

That’s exactly my point: Most projects require a “mechanic”.

At the end of the day, someone needs to know Python, and if you intend to develop a game on your own, that someone is you.

I think you can make a valid argument for the SCA system, as something that could have greater potential, if people developed “components” that fit neatly within that existing framework. However, as things stand, that “Ready-To-Use” ecosystem doesn’t exist.