Can blender's game engine support point and click adventure?

Wrong, you need python, as i said before you can not get the hitPosition of the mouse without it, so you need python. There is no way around this. (just 1 line of code is enough, but still you need it)

However, if you just want to make a game like MYST then yes you can do that without any code(because then your method of scenes would work, you gonna need tons of scenes but still it is possible). Other then that you need python.

what i’m saying is you need levels in your game that the player gets to discover by playing, no by going into a level select screen, because then it would stop being a game, it would just be a powerpoint presentation. this is especially true of a story driven game such as… an adventure game.

i wont tell someone that they can solve the theory of unified fields while not knowing multiplication. it is not a matter of giving up when something is too complicated, because then nothing would get made. you learn by trying, looking stuff up and asking questions, and something that seems complicated becomes simpler. if you don’t know python, you go to one of the THOUSANDS of free tutorials on the internet and learn it (like i did, i didn’t go to no fancy videogame university to know what i know), or you copy code from a script, paste it, then change something and see what happens, or you ask for help.
it is not unfair to tell someone that they need python for a game they want, it is the truth (without python it would not be The game they want but the one they were able to make with just logic bricks), i’m not telling them that it can’t be done in bge, i’m telling them that it is easier, better, to do it with python. using logic bricks for a ridiculously complex project such as a p&c adventure, is like eating soup with a fork. no one is stopping you from doing it, but it is easier if you use a spoon. logic bricks are for platformers and arcades, python is for mouse controlled applications with a lot of decision making. it is not press A to jump, it is if A and B then C but only if H.

this is wrong. sure a player can ruin his gameexperience by doing so but if you choose to play a game you do not betray yourself by choosing levels you didnt reach. therefore your comment is obsolete.

yes you said it before and i asked you what do you need the hitposition for and you dont answer the question. in a point and click adventure you see something in your screen you mouseover it an push the mousebutton and than it reacts like you tell it to react. you dont need any hitposition,because you can easily do this with bricks.

i dont see any real reason why you have to use hitposition so your comment is obsolete.

ok, now we see what the problem really is . it is not that you cannot build a point and click adventure without using python. the problem is that YOU cannot imagine to build such a project without using python.
complexity is never a problem when you use bricks as long as you use the rules of object oriented programming. sounds weird. its not. if you dont follow these rules while using python, you will lose control over your code. if you dont use the rules while using bricks, you will get a chaos.

e.g. you can parent any item you can find at your character and put any action you can do with it at the character. this will lead to a chaotic brick desaster at your character. lets use the fish for example that you have to give to the troll. first you need a second camera. call it item menu camera. steer all items you collect at it. i made a simple blend to show it. you dont even have to put these bricks on every item in the game you can use. just make an item superclassobject, shiftduplicate it and parent
the gameitem at it. you will never see the bricks of the superclass again, like it is when you write programs.

mouseover block.blend (458.6 KB)

mouseover the middleblock and it will move the gameitemblock to the other block that is used as you menu for ? blocks!

if you want to give the fish to the troll, switch to the menu camera, mouseover the fish and the fish will have all the methods that you need it to work. nearsensor to check if you are near the troll. messageactuator to tell the troll he is been given the fish and end item actuator to let the garbagecollector delete the fish and save memory. no python needed. and if somebody doesnt want to learn python he can build complex point and click adventures without ending in a chaos.

this is wrong. sure a player can ruin his gameexperience by doing so but if you choose to play a game you do not betray yourself by choosing levels you didnt reach. therefore your comment is obsolete.

Well, i told you that i got a system ready to go in the resources, so here it is:

See for your self. And if you could be so kind, could you send me a blend where you do the exact same thing without python? Thanks.

well. first of all, your solution is as elegant as simple and i like simplicity.

now i see, what hitPosition is. its the position a ray has when it starts at the camera and tries to reach the mouseposition and hits an object. ok, this can be done easily without python. you need 3 more objects, a few bricks and some tweeking.

build an object with 2 vertices, one at the origin of the camera, the other beneath the farest point of the playfield. this is the replacement of the ray. transform the origin to the vertex at the camera. now use mouselook at the “raystick”. it should not be seeable but if you want to be sure use an invisible actuator.
at the end of the raystick under the playfield, you parent an empty.
edit: because you cannot use the mousecursor, you need a selfmade mousecursor. the advantage is that it can have any appearance you want it to have.
the mousecursor needs the steeringactuator with the empty as a target and the distance constraint to keep your selfmade mousecursor above the playfield.
put a mouseclicksensor at the targetcursor and use a steeringactuator with target selfmademousecursor. at least you have to tweek the mouselook a little because it will not excactly react like the mousemovement you know, but you can get it pretty near to it.

i would prefer you solution if i would have known your blend before, but this was never the question, right?
this can be done without python.

there is nothing wrong with a level select screen, what is wrong is asking the player to go back to the menu and manually select the next level. these are BASIC things that are expected of a game and are not that complicated to do.

i’m not the one making an adventure game, but if did i would aproach it by writting 10 lines of code and not by conecting dots for all of eternity, wich is the problem with logic bricks. bricks are usefull for setting up a project fast, but their usefulness starts dimming when it becomes easier to just writte a script than to repeat the same proccess of conecting dots in hundreds of objects that will react in different ways to the same input. in a platformer mario will always jump when pressing A, it could change in the water but that’s all. in an adventure game using an item has a different effect on every entity of the world, and there are dozens of items wich increases the ammount of interactions exponentially. you can start with one object and a simple solution, but if you did the math you would realize not only how many times you need to create these solutions, but that using logic bricks can make the proccess take years, and additional objects and empties will eventually increase memory usage to unbearable limits. i don’t need aditional objects using python, i can use them, or i can store variables in variables, i can calculate what i need, i can tell the program when to do something and when not to from a single line of code. try to compare that to the clustermess that are your explanations on how to do something that is not that complicated.
anyways, this discussion has gone on for too long, i wont answer any more of your replies, just know that i perfectly understand what you are doing and why, i’ve been there, but then i learned python and realized that i was wrong, and you are going to too.

This can be done with mouse sensor, just put the mouse on invisible, use overlay scene make a cursor at center of screen. Any image or object can be used to act like the cursor.

Well if you want it to do it that way, or using a navmesh it could work, but i don’t expect it to be accurate (witch you don’t need in every game), but still, this is tons of work per level without python.

The best solution is trough python(my opinion), my example is ok, if i would make it these days i would build it totally in python.

True, and well i still stay at no (yes it could be done, but at what cost, it’s more like a work around). I would not suggest anyone to do it that way, just because the work needed for it and the mess it get’s if your level gets bigger and more complex. as you said ‘but you can get it pretty near to it.’

How to build complex adventure game using only logic bricks and not to get confused in huge amount of sensors and actuators? I was looked at Yo Franky game - it uses lot of logic bricks and it really look like huge mess. It’s really difficult to get what logic is ruled by what bricks. Which object have sent message or changed property etc. I have nothing against logic bricks, I am only trying to figure out how to properly organise process of building game and not to get confused at some point.

Problem with Python is not only to learn it syntax but learn how to properly use it to get benefits from it. It may take years before one could learn all needed knowleges to write optimised and organised Python scripts. Logic bricks are understandble for everyone and they are compiled running faster than Python. But in any case it’s really difficult to avoid using Python in some situations. And what is worse - there a lot of tutorials how to build games based on logic bricks, and lack of tutorials based on Python games. There are few Python tutorials for some features like mouse look scripts or similar, but there is no such tutorials how to organise whole game mechanic with Python. And most games made in BGE that i have looked are based on logic bricks.

python is one of the easiest language to learn, bge python is even easier. You can use youtube: https://www.youtube.com/results?search_query=bge+python+tutorial

you can also use the resource section and download ready to go .blends to see how they have done it.
If you really want it you can learn python in a few days time.

Guess why… “. Logic bricks are understandble for everyone”

I don’t like shewed food, do you? But there are enough tutorials around, i learned python on my own with google and youtube like 8 years ago. I still don’t know half of it but that is not needed, you only need to know what you are going/want to use. So instead of searching for python games, search for mechanics you want in python. Anyway the link above will show a few good tutorials.

You see, you needed 8 years to learn Python to be able to use it properly for building games.!To learn logic of using logic bricks you need only few weeks and you can create more or less complicated game features. To use some Python functions it’s not enough to know only Python syntax and how to properly use it in your scripts, not enought to keep your scripts optimised and clean, you also must have knowleges about math functions - vectors, matrixes, formulas and such boring for some people things. Probably that’s why so many goes easy way to use logic bricks even if they turn into real mess at some point.
It’s good that we have this forum with people ready to share their knowleges of Python scripting with others it’s way more easy to learn things when you apply them in your own work!

Thank you for link. Thogh i have learned few of these tutorials. But funny thing is more you get knowleges of Python scripting and more possibilites you have - but at same time even more questions you get! :slight_smile:

Point and click can be done without python.

This can be achieved by casting a Ray with sensor to detect a particular obj containing specific prop which is to be used for the click (especially custom cusor) at a definite direction, let say, ‘Y’ with a minimum amount of distance, but the object with the clicking data which rays need to have it’s origin at the end of the side opposite the direction of casting the Ray (i.e ‘-Y’).

This works best, mouse over would not achieve nice results

I’ll try to send an example very soon

This is not true, I’ve build 2 games within the first week purely consisting out of python, while learning it. Why else would i say it wil only take a few days to learn it (well this depends on the person itself as well, how eager it is to learn).

But indeed you learn more every day, it’s not that once you learn a language that you know it all, it keeps changing/updated so we keep learning as well. And of course you will find better/easier methods along the way.

Yes and no, to be honest basic python(bge python) is enough to build games for years. And along the way you get more and more knowledge. It all depends on what you need and want to create. Vectors you will use a lot indeed but it’s not hard in fact it’s pretty easy. Everything is documented: https://docs.blender.org/api/2.79/ for example this page: https://docs.blender.org/api/2.79/bge.logic.html.

Indeed, the community here helped me a lot as well, it’s a great place to ask for help if you need it.

So True. But that is the fun part, finding things out making it work on your own is very rewarding, but at the same time you always wonder if it can be done a better/faster/cleaner/etc. way.

If you are up for it, go learn python you won’t regret spending time to learn it, and eventually you gonna wonder why you used bricks in the first place!.

Start by making smaller things/games, don’t think big (like an mmo) start small and work your way up.

1 Like

It’s seems you are right. I have spent 2 hours to learn how to control actions with Python and managed to set up my armature play actions without single actuator using only ‘always’ sensor and python module. Actions are controlled by single property of character. Property string values are representing states of my character like ‘idle’, ‘run’, ‘walk’, ‘jump’. And armature is getting those values to play appropriate actions for each state. No more mess with lot of logic bricks. Now i can even control speed of my actions. This is wonderfull. It’s really much more easier to manage things and don’t get confused.

check this site if you want to try python:

http://www.tutorialsforblender3d.com/

looks totally outdated but they have got all bricks as pythoncode and more. i have copy and pasted a lot of it and solved many problems.

Thnak you very much for link. I found using Python is very handy and intuitive.

i am pretty sure a 10 year old kid would disagree and state that bricks are much more intuitive, but if you know how to write programs, it gives you more control to use python.