First, I would like to thank the Unity Team and the Unity community for providing me with such a great and free devolpment environment and the IMMENSE amount of information generated by the users’ community.
This being said, I have developped a brand new tool for Pathfinding (and environment analysis by extension) and I would like to feel the water, so to speak, in terms of demand within the Unity community as this appears to be a significant issue for several developpers. This tool is specifically designed to be executed in real time in a dynamically evolving environment (I do not use it, but it can seamlessly deal with terrain modifications).
I will voluntarily remain vague for intellectual property reasons. The tool relies on complex numbers (similar to quaternions but… simply something else) to represent any curvated surface (a 3d terrain or a set of discrete platforms of different heights) as a multidimensional manifold. Now this sounds esoteric but simply picture yourself that the agent scans its environment and transform it into a board with multiple different value for each squares (at least 2 but there is really no limits there, I can custimize the thing to fit just about any sort of game mechanics). Given that your agent has a front (He is going somewhere from somewhere else) and a up, the agent can plot a series of waypoints while considering the behaviours of other agents on said board (if you can conceive a game that has no up or down, send me a private message! edit: I can conceive one in my head but it looks terribly alien and must occur in space or in a non dimensional esoteric environment which would be a challenge to sell…). This method always necessarily plot the shortest path between its current location and the selected destination within a margin of (sum of (0.5/(90/angle between 2 waypoints))) which is an issue only if the agent has to move in a spiral but this can be solved using a smoothing function for every sets of 3 waypoints. This is a mathematical necessity for the agent bends a straight line between itself and its destination on the manifold (Which has the exact same curvature then the surrounding of the agent).
The extend and complexity of the considerations depends exclusively on what you are trying to accomplish. There really are no limits. The agent can consider a large environment and dozens of opponents or just the path between itself and its destination (relegating other decision to other functions). The most basic tool requires about 24-32 operations per update per agent (fixed or on every frame, your call, can be spread if agent >= 20 (else its not really relevant unless you aim for the 20th century pc market)) and a few hundred operations to compute the waypoints which can be stored until the destination is reached. If you have path hindering props, a few Ray/Sphere/CapsuleCasts between waypoints will take care of them before accepting the waypoint but this is unnecessary on open yet 3d terrains. If you want your agent to consider others, they simply have to trade 2 floats and 2 vector3 to communicate their relative information (And other elements if you want to make them consider variables proper to your game mechanics). This is a game development tool. If you can understand the purpose of this, you know you can make ennemies talk to each others for the sake of computaional efficiency.
All of this can fit in a few hundreds line of codes to be integrated inside your agent’s main script (I don’t know how you code but I always provide every type of entity with its own personal script even if involves significant copy-pasta). The tool is based on my research while being a graduate student in management. The results were meaningless or even not understandable for management academics who are surprisingly clueless about any math other than statistics (finding the value of X when what you want is to know the meaning of X), K-12 arithmetics (Caus’ there more to it) and VERY applied calculus (Basically doing what a calculator does better). Hence I looked for other applications. This is one of many possible applications. The code can be very short (or become the cornerstone of your entire AI) but is the fruit of about 1-2 years of academic research in DECISON MAKING. The sophistication does not lie in the code but in the fact the the least amount of bit (yes bit, not bytes) is collected while generating STRICTLY no informational lost. Using Information Theory, one could say that this is the smallest possible output to represent an ORIENTED chunk of a dynamic 3d space into an ABSTRACT 2d representation without losing any information whatsoever (given that you bother collecting it).
Anyone would be interested? It can be customized extensively so if you would have specific needs, write them down here and let the conversation begin!
Sounds interesting, but a working demo might make it easier for people to get an idea of what kind of system you’ve implemented. (Perhaps a downloadable executable or a web player…)
Maybe you mean something else, but copying-and-pasting is (arguably) usually the wrong choice, and can often be an indication of underlying design problems.
Can you clarify what you mean by copy-paste in this context?
I am currently designing a game with a partner around the system but an executable demo is still a few weeks down the road. By copy-pasting, I mean to literally take a script and then reworking it so that the specificities of the new object replace those of the old object. I am designing a strategy game which make use of several different objects that interact in a shared environment often using very similar mechanisms. I find it easier to start using a similar script than to start from scratch (espacially considering that every agent use the same type of transformed data to orient themselves and to compute destinations and evaluate threats/opportunities).
Now that I am thinking about it, I could design some dummy executable for the sole purpose of demonstrating the system. But I fear simply releasing my work out in the open for everyone to copy it…
I would release a video, showing the specific features that you are wanting to use that set your product apart. Then there is no chance of code hijacking or decompiling.
Wrapping the whole thing into one script would probably be a more coherent way to do this. So say you have a basic AI that goes from one point to another. (we will call this a mover) In this mover you have a target. So basically the script does nothing but point a character in the right direction, then advance at the character’s speed until it reaches it’s target.
Next you add another script that controls the target. It moves the target to an enemy, and follows him for a range, when it’s done, it resets the target back to the original.
Next, you add a script that looks at the current target, and decides if there is something in the way and updates the target to avoid things.
As you see, script 1 is the base script, script 2 is a certain type of controller. script 3 is more advanced. So with this model, I add a Mover.js and a Follow.js to an object, then the object takes on those characteristics, and is not laden with things you don’t want it to do.
There is actually no end to how much you can add on, if you structure it right.
Sadly, and you will find this out, AI is so specific to the application, that you could possibly never get a AI for general public use.
Thank you for your answer. I do not agree with the “wrapping as a more coherent thing” affirmation because of the nature of strategy games. Let’s just stay that the individual objects have an individual history that they have to keep track of and whose meaning is only relevant if combined with a localized output. I experimented with a centralized process but the amount of messages between objects quickly became larger than the actual calculations done in the centralized entity. Everybody doing its own stuff is more computaionally efficient (For the curious, the original intent of the tool was for a more action oriented game with numerous and fairly high quality 3d models in ragdoll mode doing some pretty serious environmental scanning hence the “Computation is a real issue” tone).
As for the second sentence. I fear its true, but my sharing of the American Dream (Je suis Québécois) makes me believe that I can engineer some sort of modular product that need limited modifications to be sold as a “insert in your own script and do minimal adjustment because you ain’t no idiot” customized asset that would be dealt on a project per project basis (Extent of the usage, size of the company, need for perfect match cause you might be a bit of an idot afterall).
Ah, that’s where it will really all fall apart. If you design a one size fits all, you really can’t expect alot of linking and high end customization. And if you do, it quickly loses its one size fits all nature.
Design it for a single entity, The scripts on that entity will control all the sub stuff. I of course reference back to my example of stacked scripts. I think it would be easier to modularize scripts on a single entity, not across a range of components. This allows the entities to deal with each other more easily. Not to mention that debugging it would be far simpler.
It’s ok sounding like the french doctor who, but people who need pathfinding not necessarily need the most complex system in the world. Sometimes they just need waypoints to be calculated or such, so your system would need to be able to scale down to simple operations as well.
I will look in this direction but I am afraid of the size of the baby might present risks for the delivery…
When I originally designed this, the back and forth between the central process and the objects was becoming exponential for every decision as the positions of several components had to be fetched and computed just to determine whether or not a computation should have taken place in the first place (and then real computation could begin). With autonomous processes, agents figure everything out by themselves and send a few messages upwards every now and then or transmit specific variables to each other on a need to know basis. I’ll try to figure that out tommorrow. Thanks for the input.
Good pun. I think I made it clear that the system can be stripped to a few hundreds of operations per agent per trip in the original post. That is in fact the core part of the the asset that I hope to develop for distribution. I think I will follow SAWFISHUSA’s advice and produce a video with a f*cked terrain that a bunch of agents go through at the speed of light. Thanks for your answer.
I am not downing your theory, or how it works, I actually want to see how you accomplish the goals, I also want them to be realistic. Pathfinding is not a strong suit of mine so some good banter is always necessary to keep the concepts alive.
Good luck in this. AI and pathfinding is never the easiest road to take.
This shouldn’t really be surprising as those kinds of skills aren’t really required to be a good manager. On the other hand management of people/organizations requires a certain finesse and clarity which isn’t really evident in your explanation of your system here. I am not trying to be offensive, just affirming that moving this idea into the realm of game/simulation development makes a lot more sense than looking for anyone in the business community to understand the mechanics of this method or it’s potential practical applications.
Actually, I was thinking about it a few minutes ago I think I figured what you meant on a more practical basis. As I am very bad at explaining my thought process, I will simply say that if it wouldn’t mean rewriting pretty much everything I have done in the last few weeks, I might actually start over using this method. In the end, If I produce any module for the Asset Stores, chances are it will be using the genral idea in your first post. Thank you.
I am terribly sorry sir, but since the campus I recently left was in Ontario and that I developped a strong ressentment toward anything coming from there and the mentality of its inhabitants, there are chances that my comment and tone might be unappreciative of your input (the last elections didn’t help either you bunch of reactionaries).
You are off track. Academics are not managers. They innovate or interpret to its highest possible level of abstraction the deeds of the masses. There would be no point in having academics in seperate institutions if they were to spend their time trying to reproduce artificially what managers do better in the open economy. But that is what they do and that is why the most interesting contributions they make is when they stop thinking and simply go out there, gather data and diffuse it as is or with the most minimal level of academic input. The rest, and I have been reading their outputs for three straight years, is mostly bullshit from a logical (in the strict sense of the word) and practical point of view.
Concerning your assertion about the requirements for managers, it would be significantly too long to fully address it in this forum which is not the appropriate outlet anyway. Behavioural definitions of management are similiar to saying that being a scientist is to wear a smock while playing around with smoking test tubes containing colored liquid. Typical of a Squarehead.
I never went to college, no formal training, no nothing. They keep giving me IT jobs and I have zip education in it… I do programming where I work now, but nothing like unity, all numbers and reports, transferring data from one area to another. Incredibly boring if you did it by hand, so I made programs to take care of 90% of the work here, so I have A LOT of spare time on my hands to do Unity stuff…
Please do not. Your comment was useful. Intelligence, which is derived from a French word related to perception capacity and not the “seriousness” of what was perceived, does not and will never equate the amount of formal education. Education is more akin to a capital and Intelligence to theway you use that capital. By definition, any significant innovation, which for expediency will be defined as anything more than simply doing the same thing as in the past but using a slightly different approach or tool, represents a rupture with anterior Values Networks [Christensen, The Innovator Dilemna] making a person’s number of diplomas a very dubious metric at best to assess the innovative capacity of said individual. This might shed some light on the previous comment about management if you consider that managers must solve dynamic non-linear problems else they could be aptly replace by a dice if people were able to just go along with the dice outputs.