6 posts tagged “ai”
"She doesn't want to walk any more, she's tired."
"Her little legs aren't fast enough to reach the frisbee, but she's really trying!"
"She's a bit pesky when you take her on walks, you need to tug at the leash."
[players were] adept at creating elaborate back-stories to make sense of character reactions. Façade successfully provides the player with ample material (hints at conflicts and topics relevant to the story) for creating these back-stories.
Mach1 is not well liked at present.
Despite the crushing defeats at the hands of the basic template robots given, even Mach1's bemused muddling through a merciless warzone managed to evoke strange feelings. Not feelings of pride (even if the performance was better), as might be summoned up through the ownership of a hot car in Forza, or a Level 70 in WoW. The feelings were more base, almost paternal. Having created Mach1 from nothing, watching it follow its pre-programmed orders so absolutely makes you feel equally guilty as frustrated when it is crushed at the hands of its enemies. The will to improve is not just to notch up some wins, but to act as a teacher and protector; to attempt to ensure Mach1's own survival.
This paternal element is not one shared by games such as The Sims. The NPCs in The Sims appear to be guided by your wishes at best, but are equally rebellious and random. The feeling is more of an exasperated mother to an independent teenager than that of a mother to a child. The same can be said of the reinforcement learning in Black and White. Watching your creature kick over another wall that you didn't want it to results in a quick slap and a muttering of expletives. Pokemon certainly follow orders, but there is no real connection. A series of replaceable animals that have been enslaved, and ordered to fight to the death (essentially), is hardly a situation to foster a deep bond. Seaman takes independence to its extremes, merely needing you to care for him, but living a life disinterested in your guidance, like a moody and transient cat.
Robocode has the luxury of being pitched at novice programmers, and can easily create a bond with the "players" with the interaction occurring at a lower and far less abstract level than other NPC-orientated games. Is it possible to replicate such a connection with NPCs with players that do not interact with them such first-principle levels? Exposure at a programming level simply does not appeal to the majority of gamers, for good reasons. Spore may be the first game to create this bond at a higher-level, as the lifeforms you create really are built in your own vision; their walking and reactions dictated by your benevolent/malevolent will.
Hopefully there will not be an option to create hideous man-faced fish/frogmen.
The book makes the not-unreasonable assumption that game developers are based on a Windows platform, and so all the example executables can't be run on a non-Windows machine. And, as fate conspires, Syntheticist uses a Mac from before the days when you could run Windows on them.
It is surprising how hard it is to find a simple sandbox with which to play AI games in. Perhaps it is naive to expect to find the internet littered with Java/Python/Ruby sandboxes, where a world can be created and a simple agent spawned within. Movement, interaction, and everything else, can be coded by the user, but the actual world is provided. Creating a universe, ground geometry, lighting and all the other scaffolding necessary for such a sandbox is all time taken away from actually playing with AI techniques. However, Googling for sandboxes resulted in nothing. Is "sandbox" the wrong term? Are there too many different problems and co-ordinate geometries and messaging systems and such that preclude a one-size-fits-all world?
Eventually, one cross-platform candidate stepped forward. Robocode. Robocode is a simple 2D game which allows robots to battle each other. The game world is provided, as is a co-ordinate system, and an event messaging system. This won't allow for much interesting ideas in the realm of path-finding (as there are no objects bar the bots themselves), but in terms of steering mechanisms, some firing trigonometry and such, it provides a fair base. It should at least allow some practical implementation of Buckland's examples.
It's a shame that there is no cross-platform method to do this yet (Alive! is available for Windows, which is as close to the original wish as Syntheticist has found), but such are these things sometimes.
If anyone knows of a sandbox world that can run on a Mac, please leave a comment.
Java will eventually be as fast as C++. Just as C became as fast as Assembler, so too will Java be as fast as C++.
Syntheticist was first told this about five years ago. The message was repeated about once a year, in various Computer Science classes that Syntheticist attended. It is hard to argue that this is yet the case, at least in the realms of video games.
For those that don't know about C++, the Wikipedia article is a great starting point. Syntheticist has tried, and failed, on multiple occasions, to learn C++. The language is perhaps the most ubiquitous, and yet, one of the most difficult, that exists in modern programming. The syntax can be bizarre, it has a deep-reliance on programmer-handled pointers, and the memory management is difficult. While implicit memory management is of course necessary in performance-critical applications like C++, examples such as Objective-Cs retain/release paradigm simply make more sense to a great number of people. C++'s supposed object-orientation strength is not leveraged by the inclusion of a set of libraries in a standardised way. By this Syntheticist means there is no equivalent of the Java API, or Perl's CPAN library, or Ruby's RubyForge. If you need an add-on to C++, you simply have to hit Google and hope your search comes up good.
In fact, the first chapter in Buckland's book spends a fair chunk of time with the implementation of message passing and writing dispatcher code. Syntheticist has seen this before... it is included for free in Mac OS Xs Cocoa libraries, and the syntax was far more understandable and documented than a homebrew version. This is not a slight on Buckland, who does a pretty fantastic job of illustrating what is happening, but this is something that should be available for free somewhere. Syntheticist wants to design AI routines, not implement the foundations every time. Syntheticist can only presume that C++ programmers keep libraries of their own homebrew versions of everything many graduates expect to find in their language libraries.
C++ is an anachronism to many computer science graduates; neither as object-orientated as Java, or as clean as C. Objective-C is more object-orientated, but lets you write in full ANSI C code for the portions of execution that are the most performance-critical. Yet for now, C++ overall is the fastest language to develop and execute programs, so of course it is the de-facto standard for video game development.
If you are learning C++, as Syntheticist is now destined to attempt once more, the C++ How to Program books by Deitel & Deitel are very well written, and do as good a job as can be hoped for when it comes to introducing you slowly to the task at hand.
If anyone would like Syntheticist to expand on this post with a few examples, leave a comment below. Syntheticist will keep you updated as the progression through the book continues.
Synthetic spoke to a university professor yesterday in regards to artifical intelligence in video games.
"Oh, they don't worry about us [academic AI], and we don't take much notice of them", he replied.
Academia has never traditionally been concerned with the pay-day. Discussing why we must spend millions of dollars to study what would happen if two black-holes met (this is an actual conversation Synthetic has had) is a nonsense question; it is studied because we don't know what happens yet.
The same is true for artifical intelligence. It would be a fallacy to say that AI research is not concerned with speed, but the "big problems" are ones that will eventually be processable over time, it is safe to rely on other advances in technology or algorithm design to perform processes quickly enough. The important thing is whether these processes work.
Video game AI has no such luck; everything must happen quickly, and usually, is of a lower priority than something easily marketable. As Nareyek puts it:
Humans are very visual animals, and a beautiful sunset is much easier to sell than any particuarly clever reasoning capabilities of an opponent.
Is this about to change? Will AI become more important to developers, and will we see a convergence of academic and video game AI? Very probably (Nareyek also notes that this has been said for a long time). Multiple cores on consoles are offering real opportunities for paralellism, but that doesn't solve the marketing problem; just fill those cores up with yet another pointless shine effect and release the game.
If we presume that Fracture will be all it promises, we have reached the boundaries of physics sandboxing (for now). And we have been happy with Crackdown, GTA 3 and others to give us a sandbox and let us play with the rag-dolls inside; no-one will call the AI in these games spectacular. There are simply too many variables, and the player has too much power to shape the world around them.
By reaching this point, developers have forced their own hand. AI is the primary means of adversary in video games, and that is not likely to change for a very long time. Agents will now need to respond intelligently to the changing surroundings, and this is going to mean more than simple path-finding. Combine this with the sheer number of objects which now populate these worlds, from light-switches to blenders to vehicles to coffee-machines, the AI now has to do much more than run directly at the player to appear believable.
Assassin's Creed and Splinter Cell 5, with their focus on crowd dynamics, might well just be the tip of the iceberg, and maybe there will be some developer one-up-manship going on to see who can implement the most intelligent agents from the wealth of academic research out there.
And maybe, just maybe... publishers might find a way to market it.