3
$\begingroup$

In the recent festival of science, there was a talk given by researcher Mike Cook about:

ANGELINA, an AI game designer that has invented game mechanics, made games about news stories, and was the first AI to enter a game jam.

So the aim of Angelina AI is basically to design videogames.

Briefly, how exactly does Angelina design the new games? How does it work behind the scenes?

$\endgroup$
  • 3
    $\begingroup$ Note! The page linked to by the word "ANGELINA" is a 'known attack site' as reported by google! $\endgroup$ – Avik Mohan Sep 27 '16 at 17:53
  • 1
    $\begingroup$ @AvikMohan I've seen that in Chrome as well, but it works in other browsers, unfortunately it's the official site, so I'll leave it for now. I'll contact author to inform him about it. $\endgroup$ – kenorb Sep 27 '16 at 18:11
  • $\begingroup$ I think the malware issue has been fixed. $\endgroup$ – kenorb Oct 6 '16 at 11:05
  • 1
    $\begingroup$ For what it's worth, two VirusTotal scanners still think there's malware there. I'll keep an eye on it. $\endgroup$ – Ben N Oct 6 '16 at 13:18
1
$\begingroup$

Can't tell. I guess half his site is down because of that malware.

In any case, it appears that much of his past work on Github involves procedural generation. Which is AI... ish. Unless there's more to it, which we can't see because half the site is down.

This paper appears to offer analysis of combining procedural generation with game AI.

From the abstract:

Populated and immersive game contexts require large numbers of minor, background characters to fill out the virtual environment. To limit game AI development effort, however, such characters are typically represented by very simplistic AI with either little difference between characters or only highly formulaic variations. Here we describe a complete workflow and framework for easily designing, generating and incorporating multiple, interesting game AIs. Our approach uses high-level, visual Statechart models to represent behaviour in a modular form; this allows for not only simplistic, parameterbased variation in AI design, but also permits more complex structure-based approaches. We demonstrate our technique by applying it to the task of generating a large number of individual AIs for computer-controlled squirrels within the Mammoth 1 framework for game research. Rapid development and easy deployment of AIs allow us to create a wide variety of interesting AIs, greatly improving the sense of immersion in a virtual environment.

Update: actually, here we go. Here's an article from 2015 on AI and procedural generation, which discusses Angelina at length.

And that article links to a more in depth article from 2013.

Here's an excerpt:

Cook gave ANGELINA the ability to learn about people so that it could make games based on current events. Then Cook gave ANGELINA memory - that is, the ability to keep track of the people it had learned about. The memory's not a big deal, even though it led to a number of philosophical disagreements around Cook's desk. ANGELINA's memory is actually just a text file where it stores the names of all the people it's heard of, alongside a number: a measure of its opinion of them based on the things it's learned from internet chatter. It liked Al-Assad more than May. It liked everyone more than May.

$\endgroup$
  • 1
    $\begingroup$ Btw. The site was up for me most of the day without any warnings in Chrome. $\endgroup$ – kenorb Oct 6 '16 at 14:31
1
$\begingroup$

FORWORD NOTE: this answer is a breakdown based on my Artificial Intelligence, which based on description is very similar to Angelina.

I do want to emphasize that it is NOT Angelina

Like all artificial intelligences, in order to fully design it, you have to break AI and intelligence down deeply. If there is a confusion about a certain aspect to intelligence, you haven't broken it down enough.

I, myself, have managed to break down the intellect of producing a program (or essentially any product) very far and very deep.

Side Note: An interesting and helpful part of finishing breaking it down, was that I did not have to worry about breaking down spoken language intelligence, as that is already well-successfully accomplished and there are APIs out there in which computational creativity researchers can use such as wit.ai

So, we only have to worry about breaking down the creativity aspect.

Breaking it Down:

The Design Process:

Side Note: This I could easily provide a citation for, however it has too many accepted descriptions for me to be willing to cite one and to say that it is the or a correct citation. However, I will be providing one as a reference and that is the one provided very nicely on DiscoverDesign.

The paragraph below is provided by them, and if you are interested in breaking that process down more, DiscoverDesign fully explains the processes in detail for you.

The steps are Define the Problem, Collect Information, Brainstorm and Analyze Ideas, Develop Solutions, Get Some Sort of Feedback, Improve (which is essentially restart the process)

Defining a problem:

As far as this part of the breakdown goes, there two algorithms in which you can use for this subprocess of design:

Easy Algorithm (not really an algorithm): ask from the client what the Artificial Intelligence is providing a solution for.

However, this process could easily be made more interesting:

Difficult Algorithm: design an algorithm that can define a problem without user input.

I did some digging, and the design of the latter relies on one question that lacks enough research for a solid answer, and that is where do questions come from psychologically? or more specifically, how does curiosity work?

With more research on Google I was led to this article specifically addressing that question.

How Curiosity works:

The 2 theories it stated that have yet to be fully proven are drive theory and incongruity theory

Drive Theory simply states, we have a need to be curious, and to fulfill that need, we ask questions.

So, needless to say this theory isn't helpful to the design of the A.I.

Incongruity Theory states that we are able identify things we do not FULLY understand or understand AT ALL which leads us to asking questions.

With help of my peers contributing to my research project, I was able to induce from Incongruity Theory and observations I had noticed within interviews (not job interviews, press interviews) that questions are made by noticing a missing/unclear attribute or characteristic on a certain idea, concept, or object (essentially anything the brain can virtually image or understand).

My Own Inductive Theory on Curiousity

The way that I theorize that these missing/unclear attributes are identified is that your consciousness instantaneously, and subconsciously is looking at other similar ideas and looking at their clear and concisely known attributes

Solution Based on the Theory:

So, what I have designed is fairly simple:

An idea is represented programmatically as an object.

The object has certain characteristics known as properties (which are those attributes).

The program reads over those properties and finds other objects similar to it based on those properties.

It then checks those similar objects for properties that the original object does not have, and therefore marks those properties as unknown on the original object, making it possible to apply incongruity theory

Collecting Information:

This process is already achieved with machine learning, any questions on this subprocess of design need to be addressed to the machine-learning tag

Brainstorming Ideas:

This could be accomplished by mixing an algorithm that collects information (collects already working solutions) with the algorithm that I described within the curiosity section

Analyzing Ideas:

This is a really simple one. Debugging (not getting input), and getting user feedback (getting input). To provide analyzation over simply an idea you could combine my algorithm, with another information collecting algorithm to induce whether an idea is feasible.

Developing Solutions:

This is where IDE-development knowledge comes in handy.

In order to make product development easy and understandable to an AI, we have to choose a type of product that could be developed easily.

Editor's Note: I do recommend this in order to keep the testing of the algorithms for the previous processes really simple.

Easily Designed Product that I Selected for Designing an Algorithm:

I am providing this to you, so you can model a way to reproduce this process for the Intelligence you would like to build. So, I only hope that you do not intend on copying it, but my artificial intelligence project is free and open-source, so there is no issue, if you do.

Considering that written programs are very easy products to develop fully, and Considering that program language rules are straight forward. and very consistent in comparison to spoken/written languages, I chose to have it develop programs.

So, in order to do this it has to understand how to write a program. The most essential skill a computer programmer can have and needs to write a program is not a dictionary of programming terms, functions, and commands, but rather knowledge of the syntactical rules for a programming language.

The technological solution to this is pretty much already available in IDE tech, and it is known as syntactical highlighting. All that would have to be done is to re-purpose it from highlighting to assisting with writing.

Getting Some Sort of Feedback.

This is essentially the same as analyzing the ideas, but now we would be using algorithms to analyze the final physical product as opposed to conceptual ideas.

Afterword Notes:

I am designing and researching into computational creativity, and I do want to mention that I just discovered this field of research is a thing by looking up the name Mike Cook on the internet, and that in order for me to help you, my answer does require lengthiness.

Paragraph 3 of the page found there [Mike Cook link] (listed at the time of 10/13/2016 at 8:28pm Arizona (USA) Time) that Mike Cook specializes in computational creativity

With further research this term was coined by the ICCC 2016 according to this google search made by myself at that time.

Unfortunately, google did not further provide me with any products actually being made within this field of research, so I would therefore like to discuss mine as it is open-source under a MIT-license.

Note to Community:

I do want to make clear that I am providing this answer out of helpfulness, and I do understand that it has no credibility, as the product I am using (as an example) is my own. So with that, the community (I have a disagreement with this) does not encourage, therefore I do not encourage that you select this as a correct answer.

Future readers, please add to my answer or note in the comments of any developments in which I can cite in the case that you are aware of such devs and really liked my answer.

If you reference anything about notGucci94's account on reddit I do want to state that that is my account. Therefore, is not useful as a citation either

EDIT: due to compliance with StackExchange's rules, I can not provide the product's name or a link to it, as I am not to be and I am to avoid promoting a product as an answer. If you are interested in the licensing, please email me, and do not ask me to place the product in the answer, and do not ask me via email if you can receive a copy of the product. I am not and will not be promoting here in my community WHERE THE RULES SAY NO!

Please, be mindful of StackExchange's rules, and do not ask me to break them, as I value this community, and do not wish to lose my respect.

$\endgroup$
  • $\begingroup$ 2 things. I do want state my strong opinion on citations and the way they are encouraged: Citations are not only proof of an answer, but reference to other material in which a reader can learn more (<-this I believe is what a helpful answer is; a "right" one is not always a helpful one), so if you do want to encourage a citation as proof in the comments, please also provide it as a reference to learn more. The other thing is I am expecting your criticisms for super-long answer. As to both of those things I will be making improvements. $\endgroup$ – user3000 Oct 14 '16 at 4:50
  • $\begingroup$ Shameless plug, but you should also check the Product Design Process (imaginarycloud.com/blog/product-design-process). $\endgroup$ – Tiago Franco May 29 at 22:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.