SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Game Ontology

                      Bogdan Țicău - bogdan.ticau@infoiasi.ro

                 Marius-Andrei Cureleț - marius.curelet@infoiasi.ro

                Computer Science Faculty, ”Al. I. Cuza” University of Iasi
                     Software Systems Engineering specialization




1      The need for a Game Ontology


        In the past couple of years we have witnessed the emergence of a very large
number electronic games, with different and often interleaving characteristics that
lead to difficulties in categorizing them. What characters, input/output device, rules,
entities, objectives describes every game can be challenging for someone who wants
to know what game type they are seeing. A formal approach is needed so that a game
type can be recognized, possibly automatically, from a game review, description.
        A big problem in thoroughly categorizing an electronic game is technology
which has evolved a lot in the past years and is making very hard to define in abstract
the type. Now lots of graphics mask the logic and flow behind the game, so we need
to define the basics that make an electronic game, from all points of view, paying
attention to the depth of the abstraction.
        Some game genres can be sometimes hard to distinguish as they contain
similar characteristics and only after several reviews can be surely classified, also
there are games that have some part that is from one genre and another part from
another genre.
        We created a game ontology that accounts for all of these problems and
resolves them, each game having certain characteristics that describe it and that can
be classified as a specific type.
        The main issue that had to be resolved was defining the relationships between
the classes that we determined to be relevant in the process of describing a game
genre. Whether or not these properties’ connections in terms of game description
translated into disjoint classes in the ontology was the basis of our workflow.
        The end result had to allow very precise queries to be performed on our
ontology so that no erroneous classifications would emerge.
2


2       Game Ontology Structure


       The ontology we created has six classes: Game Characters, Game Entity
Manipulation, Game Interface, Game Objectives, Game Rules, Game Types. We used
Protégé 4.0 to design the ontology and the code presented is generated by it.

          Game characters represent the characters in the game, playable or not,
fictional or historically accurate.

          Game entity manipulation are the ways someone can manipulate entities of
any kind in the game. Actions that a player can make in the game can be simple, like
collide, remove, rotate, or compound that involve more than one simple action, like
transport resources.

         Game interface contains the input that a game takes and what it outputs, the
presentation of a game. Input devices and input method are subclasses of input and
input method contains the number of entities that can be manipulated and the
manipulation method, direct or indirect. The presentation class refers to how the game
shows itself to the player: game world cardinality, the software and hardware behind
the presentation of the game world.

        Game objectives contain ways to measure the progress in a game, what to do
and by whom.

        Game rules represent the constraints of the game on the player and on the
game world, how things work, what is allowed and not allowed, basically what
happens in a situation.

         Game types contain the actual genres of electronic games: Action, Board,
Puzzle, Role-Playing, Shooter, Simulator, Strategy and their appropriate sub-genres.

         We also created object properties:
    ─ hasCameraType that is applied for a game type with a certain camera
      positioning;
    ─ hasCharacter says that a game has a certain character;
    ─ hasCharacterType states that a game has a certain type of character;
    ─ hasInputDevice states that a game has an input device;
    ─ isCharacterFrom that is applied for a certain character that is from a certain
      game, it is inverse with hasCharacter;
    ─ hasGameplayRules says that rules a game has;
    ─ hasTimeSegmentation tells what kind of time flow a game has;
    ─ hasPointOfView represents the point of view(POV) in a game;
Game Ontology        3


           Besides properties we also created individuals, characters and game types,
    fictional or historically accurate characters and games from different genres. We
    also created some queries to show the different properties and relations between
    these individuals.


3       Game ontology


        The full code of the ontology is located in GameOntology.owl, in the
following section we present only a few classes, properties, individuals.
    <?xml version="1.0"?>


    <!DOCTYPE rdf:RDF [
        <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
        <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
        <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-
    xml#" >
        <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-
    schema#" >
        <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-
    syntax-ns#" >]>

    <rdf:RDF
    xmlns="http://www.semanticweb.org/ontologies/2010/0/Gam
    eOntology.owl#"

    xml:base="http://www.semanticweb.org/ontologies/2010/0/
    GameOntology.owl"
          xmlns:owl2xml="http://www.w3.org/2006/12/owl2-
    xml#"

    xmlns:GameOntology="http://www.semanticweb.org/ontologi
    es/2010/0/GameOntology.owl#"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:owl="http://www.w3.org/2002/07/owl#"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-
    syntax-ns#"
        <owl:Ontology rdf:about=""/>

    <!--
4



    ///////////////////////////////////////////////////////
    ////////////////////////////////
        //
        // Object Properties
        //

    ///////////////////////////////////////////////////////
    ////////////////////////////////
         -->
        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#hasCameraType -->

        <owl:ObjectProperty rdf:about="#hasCameraType">
            <rdfs:range rdf:resource="#Camera_Binding"/>
            <rdfs:domain rdf:resource="#Game_Types"/>
        </owl:ObjectProperty>



        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#hasCharacter -->

        <owl:ObjectProperty rdf:about="#hasCharacter">
            <rdfs:range rdf:resource="#Game_Characters"/>
            <rdfs:domain rdf:resource="#Game_Types"/>
        </owl:ObjectProperty>

        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#hasGameplayRules -->

        <owl:ObjectProperty rdf:about="#hasGameplayRules">
            <rdfs:domain rdf:resource="#Game_Types"/>
            <rdfs:range rdf:resource="#Gameplay_Rules"/>
        </owl:ObjectProperty>



        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#hasInputDevice -->
Game Ontology     5


    <owl:ObjectProperty rdf:about="#hasInputDevice">
        <rdfs:domain rdf:resource="#Game_Types"/>
        <rdfs:range rdf:resource="#Input_Devices"/>
    </owl:ObjectProperty>



    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#hasPointOfView -->

    <owl:ObjectProperty rdf:about="#hasPointOfView">
        <rdfs:domain rdf:resource="#Game_Types"/>
        <rdfs:range rdf:resource="#Point_Of_View"/>
    </owl:ObjectProperty>



    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#hasTimeSegmentation -->

    <owl:ObjectProperty
rdf:about="#hasTimeSegmentation">
        <rdfs:domain rdf:resource="#Game_Types"/>
        <rdfs:range
rdf:resource="#Temporal_Coordination"/>
    </owl:ObjectProperty>



    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#isCharacterFrom -->

    <owl:ObjectProperty rdf:about="#isCharacterFrom">
        <rdf:type
rdf:resource="&owl;FunctionalProperty"/>
        <rdfs:domain rdf:resource="#Game_Characters"/>
        <rdfs:range rdf:resource="#Game_Types"/>
        <owl:inverseOf rdf:resource="#hasCharacter"/>
    </owl:ObjectProperty>

    <!--
6



    ///////////////////////////////////////////////////////
    ////////////////////////////////
        //
        // Classes
        //

    ///////////////////////////////////////////////////////
    ////////////////////////////////
         -->

        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#0-Dimension_Gameplay -->

        <owl:Class rdf:about="#0-Dimension_Gameplay">
            <rdfs:subClassOf
    rdf:resource="#Cardinality_of_Gameplay"/>
        </owl:Class>



        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#1-Dimensional_Gameplay -->

        <owl:Class rdf:about="#1-Dimensional_Gameplay">
            <rdfs:subClassOf
    rdf:resource="#Cardinality_of_Gameplay"/>
        </owl:Class>



        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#1-Dimensional_Gameworld -->

        <owl:Class rdf:about="#1-Dimensional_Gameworld">
            <rdfs:subClassOf
    rdf:resource="#Cardinality_Of_Gameworld"/>
        </owl:Class>
Game Ontology     7


    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#2-Dimensional_Gameplay -->

    <owl:Class rdf:about="#2-Dimensional_Gameplay">
        <rdfs:subClassOf
rdf:resource="#Cardinality_of_Gameplay"/>
    </owl:Class>


    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#Action -->

    <owl:Class rdf:about="#Action">
        <rdfs:subClassOf rdf:resource="#Game_Types"/>
    </owl:Class>

    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#First_Person_Shooter -->

    <owl:Class rdf:about="#First_Person_Shooter">
        <rdfs:subClassOf rdf:resource="#Shooter"/>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasCameraType"/>
                <owl:allValuesFrom
rdf:resource="#First-person_Point_of_View"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasInputDevice"/>
                <owl:someValuesFrom
rdf:resource="#Mouse"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasCameraType"/>
8


                    <owl:allValuesFrom
    rdf:resource="#Targeted_Camera"/>
                </owl:Restriction>
            </rdfs:subClassOf>
            <rdfs:subClassOf>
                <owl:Restriction>
                    <owl:onProperty
    rdf:resource="#hasInputDevice"/>
                    <owl:someValuesFrom
    rdf:resource="#Keyboard"/>
                </owl:Restriction>
            </rdfs:subClassOf>
        </owl:Class>


        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#Platform -->

        <owl:Class rdf:about="#Platform">
            <rdfs:subClassOf rdf:resource="#Action"/>
            <rdfs:subClassOf>
                <owl:Restriction>
                    <owl:onProperty
    rdf:resource="#hasGameplayRules"/>
                    <owl:someValuesFrom
    rdf:resource="#Level"/>
                </owl:Restriction>
            </rdfs:subClassOf>
            <rdfs:subClassOf>
                <owl:Restriction>
                    <owl:onProperty
    rdf:resource="#hasEntityManipulationMethod"/>
                    <owl:someValuesFrom
    rdf:resource="#Direct_Manipulation"/>
                </owl:Restriction>
            </rdfs:subClassOf>
            <rdfs:subClassOf>
                <owl:Restriction>
                    <owl:onProperty
    rdf:resource="#hasGameplayRules"/>
                    <owl:someValuesFrom
    rdf:resource="#Lives"/>
                </owl:Restriction>
            </rdfs:subClassOf>
Game Ontology   9


        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasCharacterType"/>
                <owl:someValuesFrom
rdf:resource="#Fictional"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasGameplayRules"/>
                <owl:someValuesFrom
rdf:resource="#Gameworld_Exhaustion"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasGameplayRules"/>
                <owl:someValuesFrom
rdf:resource="#Puzzle"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasGameplayRules"/>
                <owl:someValuesFrom
rdf:resource="#Wave"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasGameplayRules"/>
                <owl:someValuesFrom
rdf:resource="#Difficulty_Levels"/>
            </owl:Restriction>
        </rdfs:subClassOf>
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty
rdf:resource="#hasGameplayRules"/>
10


                     <owl:someValuesFrom
     rdf:resource="#Bonus_Stage"/>
                 </owl:Restriction>
             </rdfs:subClassOf>
             <rdfs:subClassOf>
                 <owl:Restriction>
                     <owl:onProperty
     rdf:resource="#hasTimeSegmentation"/>
                     <owl:someValuesFrom
     rdf:resource="#Rounds"/>
                 </owl:Restriction>
             </rdfs:subClassOf>
             <rdfs:subClassOf>
                 <owl:Restriction>
                     <owl:onProperty
     rdf:resource="#hasGameplayRules"/>
                     <owl:allValuesFrom>
                         <owl:Class>
                             <owl:unionOf
     rdf:parseType="Collection">
                                 <rdf:Description
     rdf:about="#2-Dimensional_Gameplay"/>
                                 <rdf:Description
     rdf:about="#3-Dimensional_Gameplay"/>
                             </owl:unionOf>
                         </owl:Class>
                     </owl:allValuesFrom>
                 </owl:Restriction>
             </rdfs:subClassOf>
             <rdfs:subClassOf>
                 <owl:Restriction>
                     <owl:onProperty
     rdf:resource="#hasGameplayRules"/>
                     <owl:someValuesFrom
     rdf:resource="#Boss_Challenge"/>
                 </owl:Restriction>
             </rdfs:subClassOf>
             <rdfs:subClassOf>
                 <owl:Restriction>
                     <owl:onProperty
     rdf:resource="#hasGameplayRules"/>
                     <owl:someValuesFrom
     rdf:resource="#Mission"/>
                 </owl:Restriction>
             </rdfs:subClassOf>
Game Ontology   11


    </owl:Class>

    <!--

///////////////////////////////////////////////////////
////////////////////////////////
    //
    // Individuals
    //

///////////////////////////////////////////////////////
////////////////////////////////
     -->

     <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#Alex_Mercer -->

    <Fictional rdf:about="#Alex_Mercer">
        <rdf:type rdf:resource="&owl;Thing"/>
        <isCharacterFrom rdf:resource="#Prototype"/>
    </Fictional>



    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#Alistair -->

    <Fictional rdf:about="#Alistair">
        <rdf:type rdf:resource="&owl;Thing"/>
        <isCharacterFrom
rdf:resource="#Dragon_Age:_Origins"/>
    </Fictional>



    <!--
http://www.semanticweb.org/ontologies/2010/0/GameOntolo
gy.owl#Antharas -->

    <Fictional_NPC rdf:about="#Antharas">
        <rdf:type rdf:resource="&owl;Thing"/>
        <isCharacterFrom rdf:resource="#Lineage_2"/>
    </Fictional_NPC>
12




         <!--
     http://www.semanticweb.org/ontologies/2010/0/GameOntolo
     gy.owl#Avatar_:_The_Game -->

         <Adventure rdf:about="#Avatar_:_The_Game">
             <rdf:type rdf:resource="&owl;Thing"/>
         </Adventure>



         <!--
     http://www.semanticweb.org/ontologies/2010/0/GameOntolo
     gy.owl#Baal -->

         <Fictional_NPC rdf:about="#Baal">
             <rdf:type rdf:resource="&owl;Thing"/>
             <isCharacterFrom rdf:resource="#Diablo"/>
         </Fictional_NPC>


         <Historically_Accurate_NPC
     rdf:about="#George_Washington">
             <rdf:type rdf:resource="&owl;Thing"/>
             <isCharacterFrom
     rdf:resource="#Civilization_IV"/>
         </Historically_Accurate_NPC>



         <!--
     http://www.semanticweb.org/ontologies/2010/0/GameOntolo
     gy.owl#Gordon_Freeman -->

         <Fictional rdf:about="#Gordon_Freeman">
             <rdf:type rdf:resource="&owl;Thing"/>
             <isCharacterFrom rdf:resource="#Half_Life_-
     _Episode_2"/>
         </Fictional>
Game Ontology        13


        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#Half_Life_-_Episode_2 -->

        <owl:Thing rdf:about="#Half_Life_-_Episode_2">
            <rdf:type
    rdf:resource="#First_Person_Shooter"/>
        </owl:Thing>



        <!--
    http://www.semanticweb.org/ontologies/2010/0/GameOntolo
    gy.owl#Jake_Sully -->

        <Fictional rdf:about="#Jake_Sully">
            <rdf:type rdf:resource="&owl;Thing"/>
            <isCharacterFrom
    rdf:resource="#Avatar_:_The_Game"/>
        </Fictional>



4     Game ontology queries




        The result will be all the individuals from Shooter class (all games of type
Shooter) that have a Mouse for the Input Device. This is a characteristic for First
Person Shooter games and so the query will return all the games of this type.
14




         The result will be all the Characters that belong to a type of game that has
First Person Point of View. This characteristic is specific for adventure type games, so
the query will return characters from the games Prototype, Avatar and Half Life:
Episode 2, Alex Mercer and Jake Sully.




         The result will be all the Characters that belong to a type of game that offers
the possibility to the gamer of moving his character and to detect collisions with other
objects. These features are specific to adventure type games and the query will return
the characters from the games Prototype and Avatar, Alex Mercer and Jake Sully.




         The result will be all the games whose Objectives can be completed through
Score and Time. This is a characteristic for Real Time Strategy games, the query will
return games of this type, Command and Conquer: Red Alert 3.
Game Ontology   15


References


   1.   http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/

   2.   http://protegewiki.stanford.edu/index.php/DLQueryTab

   3.   http://www.co-ode.org/resources/reference/manchester_syntax/

   4.   http://protegewiki.stanford.edu/index.php/Protege4GettingStarted

   5.   http://protegewiki.stanford.edu/index.php/Protege4UserDocs

   6.   http://www.gamespot.com/games.html?type=games&platform=5&mode=top
        &tag=subnav;all

Mais conteúdo relacionado

Semelhante a Game Ontology

Learning to Play Complex Games
Learning to Play Complex GamesLearning to Play Complex Games
Learning to Play Complex Games
butest
 
GameWorkshop Pres 2
GameWorkshop Pres 2GameWorkshop Pres 2
GameWorkshop Pres 2
jlaquinte
 

Semelhante a Game Ontology (20)

Ludo: An Ontology to Create Linked Data Driven Serious Games
Ludo: An Ontology to Create Linked Data Driven Serious GamesLudo: An Ontology to Create Linked Data Driven Serious Games
Ludo: An Ontology to Create Linked Data Driven Serious Games
 
Item generation using rule based randomization algorithms in RPG games
Item generation using rule based randomization algorithms in RPG gamesItem generation using rule based randomization algorithms in RPG games
Item generation using rule based randomization algorithms in RPG games
 
Segap project(lncs)
Segap project(lncs)Segap project(lncs)
Segap project(lncs)
 
LARP gamepaly approach
LARP gamepaly approachLARP gamepaly approach
LARP gamepaly approach
 
Eight Rules for Making Your First Great Game
Eight Rules for Making Your First Great GameEight Rules for Making Your First Great Game
Eight Rules for Making Your First Great Game
 
BYOD: Build Your First VR Experience with Unreal Engine
BYOD: Build Your First VR Experience with Unreal EngineBYOD: Build Your First VR Experience with Unreal Engine
BYOD: Build Your First VR Experience with Unreal Engine
 
Web Game Development
Web Game DevelopmentWeb Game Development
Web Game Development
 
Gaming with Open Source Frameworks
Gaming with Open Source FrameworksGaming with Open Source Frameworks
Gaming with Open Source Frameworks
 
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
 
Learning to Play Complex Games
Learning to Play Complex GamesLearning to Play Complex Games
Learning to Play Complex Games
 
GAMEPREZ Gamejam@HackerDojo
GAMEPREZ Gamejam@HackerDojoGAMEPREZ Gamejam@HackerDojo
GAMEPREZ Gamejam@HackerDojo
 
The Guerrilla Guide to Game Code
The Guerrilla Guide to Game CodeThe Guerrilla Guide to Game Code
The Guerrilla Guide to Game Code
 
GameWorkshop Pres 2
GameWorkshop Pres 2GameWorkshop Pres 2
GameWorkshop Pres 2
 
Hybrid Game Development with GameSalad
Hybrid Game Development with GameSaladHybrid Game Development with GameSalad
Hybrid Game Development with GameSalad
 
Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...
Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...
Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...
 
xAPI Application Profile for Serious Games
xAPI Application Profile for Serious GamesxAPI Application Profile for Serious Games
xAPI Application Profile for Serious Games
 
Digital Dragons 2023 (1).pdf
Digital Dragons 2023 (1).pdfDigital Dragons 2023 (1).pdf
Digital Dragons 2023 (1).pdf
 
Final project report of a game
Final project report of a gameFinal project report of a game
Final project report of a game
 
Game object models - Game Engine Architecture
Game object models - Game Engine ArchitectureGame object models - Game Engine Architecture
Game object models - Game Engine Architecture
 
20210809 story book_driven_new_system_development_nuxtjs
20210809 story book_driven_new_system_development_nuxtjs20210809 story book_driven_new_system_development_nuxtjs
20210809 story book_driven_new_system_development_nuxtjs
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Game Ontology

  • 1. Game Ontology Bogdan Țicău - bogdan.ticau@infoiasi.ro Marius-Andrei Cureleț - marius.curelet@infoiasi.ro Computer Science Faculty, ”Al. I. Cuza” University of Iasi Software Systems Engineering specialization 1 The need for a Game Ontology In the past couple of years we have witnessed the emergence of a very large number electronic games, with different and often interleaving characteristics that lead to difficulties in categorizing them. What characters, input/output device, rules, entities, objectives describes every game can be challenging for someone who wants to know what game type they are seeing. A formal approach is needed so that a game type can be recognized, possibly automatically, from a game review, description. A big problem in thoroughly categorizing an electronic game is technology which has evolved a lot in the past years and is making very hard to define in abstract the type. Now lots of graphics mask the logic and flow behind the game, so we need to define the basics that make an electronic game, from all points of view, paying attention to the depth of the abstraction. Some game genres can be sometimes hard to distinguish as they contain similar characteristics and only after several reviews can be surely classified, also there are games that have some part that is from one genre and another part from another genre. We created a game ontology that accounts for all of these problems and resolves them, each game having certain characteristics that describe it and that can be classified as a specific type. The main issue that had to be resolved was defining the relationships between the classes that we determined to be relevant in the process of describing a game genre. Whether or not these properties’ connections in terms of game description translated into disjoint classes in the ontology was the basis of our workflow. The end result had to allow very precise queries to be performed on our ontology so that no erroneous classifications would emerge.
  • 2. 2 2 Game Ontology Structure The ontology we created has six classes: Game Characters, Game Entity Manipulation, Game Interface, Game Objectives, Game Rules, Game Types. We used Protégé 4.0 to design the ontology and the code presented is generated by it. Game characters represent the characters in the game, playable or not, fictional or historically accurate. Game entity manipulation are the ways someone can manipulate entities of any kind in the game. Actions that a player can make in the game can be simple, like collide, remove, rotate, or compound that involve more than one simple action, like transport resources. Game interface contains the input that a game takes and what it outputs, the presentation of a game. Input devices and input method are subclasses of input and input method contains the number of entities that can be manipulated and the manipulation method, direct or indirect. The presentation class refers to how the game shows itself to the player: game world cardinality, the software and hardware behind the presentation of the game world. Game objectives contain ways to measure the progress in a game, what to do and by whom. Game rules represent the constraints of the game on the player and on the game world, how things work, what is allowed and not allowed, basically what happens in a situation. Game types contain the actual genres of electronic games: Action, Board, Puzzle, Role-Playing, Shooter, Simulator, Strategy and their appropriate sub-genres. We also created object properties: ─ hasCameraType that is applied for a game type with a certain camera positioning; ─ hasCharacter says that a game has a certain character; ─ hasCharacterType states that a game has a certain type of character; ─ hasInputDevice states that a game has an input device; ─ isCharacterFrom that is applied for a certain character that is from a certain game, it is inverse with hasCharacter; ─ hasGameplayRules says that rules a game has; ─ hasTimeSegmentation tells what kind of time flow a game has; ─ hasPointOfView represents the point of view(POV) in a game;
  • 3. Game Ontology 3 Besides properties we also created individuals, characters and game types, fictional or historically accurate characters and games from different genres. We also created some queries to show the different properties and relations between these individuals. 3 Game ontology The full code of the ontology is located in GameOntology.owl, in the following section we present only a few classes, properties, individuals. <?xml version="1.0"?> <!DOCTYPE rdf:RDF [ <!ENTITY owl "http://www.w3.org/2002/07/owl#" > <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2- xml#" > <!ENTITY rdfs "http://www.w3.org/2000/01/rdf- schema#" > <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf- syntax-ns#" >]> <rdf:RDF xmlns="http://www.semanticweb.org/ontologies/2010/0/Gam eOntology.owl#" xml:base="http://www.semanticweb.org/ontologies/2010/0/ GameOntology.owl" xmlns:owl2xml="http://www.w3.org/2006/12/owl2- xml#" xmlns:GameOntology="http://www.semanticweb.org/ontologi es/2010/0/GameOntology.owl#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf- syntax-ns#" <owl:Ontology rdf:about=""/> <!--
  • 4. 4 /////////////////////////////////////////////////////// //////////////////////////////// // // Object Properties // /////////////////////////////////////////////////////// //////////////////////////////// --> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#hasCameraType --> <owl:ObjectProperty rdf:about="#hasCameraType"> <rdfs:range rdf:resource="#Camera_Binding"/> <rdfs:domain rdf:resource="#Game_Types"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#hasCharacter --> <owl:ObjectProperty rdf:about="#hasCharacter"> <rdfs:range rdf:resource="#Game_Characters"/> <rdfs:domain rdf:resource="#Game_Types"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#hasGameplayRules --> <owl:ObjectProperty rdf:about="#hasGameplayRules"> <rdfs:domain rdf:resource="#Game_Types"/> <rdfs:range rdf:resource="#Gameplay_Rules"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#hasInputDevice -->
  • 5. Game Ontology 5 <owl:ObjectProperty rdf:about="#hasInputDevice"> <rdfs:domain rdf:resource="#Game_Types"/> <rdfs:range rdf:resource="#Input_Devices"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#hasPointOfView --> <owl:ObjectProperty rdf:about="#hasPointOfView"> <rdfs:domain rdf:resource="#Game_Types"/> <rdfs:range rdf:resource="#Point_Of_View"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#hasTimeSegmentation --> <owl:ObjectProperty rdf:about="#hasTimeSegmentation"> <rdfs:domain rdf:resource="#Game_Types"/> <rdfs:range rdf:resource="#Temporal_Coordination"/> </owl:ObjectProperty> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#isCharacterFrom --> <owl:ObjectProperty rdf:about="#isCharacterFrom"> <rdf:type rdf:resource="&owl;FunctionalProperty"/> <rdfs:domain rdf:resource="#Game_Characters"/> <rdfs:range rdf:resource="#Game_Types"/> <owl:inverseOf rdf:resource="#hasCharacter"/> </owl:ObjectProperty> <!--
  • 6. 6 /////////////////////////////////////////////////////// //////////////////////////////// // // Classes // /////////////////////////////////////////////////////// //////////////////////////////// --> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#0-Dimension_Gameplay --> <owl:Class rdf:about="#0-Dimension_Gameplay"> <rdfs:subClassOf rdf:resource="#Cardinality_of_Gameplay"/> </owl:Class> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#1-Dimensional_Gameplay --> <owl:Class rdf:about="#1-Dimensional_Gameplay"> <rdfs:subClassOf rdf:resource="#Cardinality_of_Gameplay"/> </owl:Class> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#1-Dimensional_Gameworld --> <owl:Class rdf:about="#1-Dimensional_Gameworld"> <rdfs:subClassOf rdf:resource="#Cardinality_Of_Gameworld"/> </owl:Class>
  • 7. Game Ontology 7 <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#2-Dimensional_Gameplay --> <owl:Class rdf:about="#2-Dimensional_Gameplay"> <rdfs:subClassOf rdf:resource="#Cardinality_of_Gameplay"/> </owl:Class> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Action --> <owl:Class rdf:about="#Action"> <rdfs:subClassOf rdf:resource="#Game_Types"/> </owl:Class> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#First_Person_Shooter --> <owl:Class rdf:about="#First_Person_Shooter"> <rdfs:subClassOf rdf:resource="#Shooter"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasCameraType"/> <owl:allValuesFrom rdf:resource="#First-person_Point_of_View"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasInputDevice"/> <owl:someValuesFrom rdf:resource="#Mouse"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasCameraType"/>
  • 8. 8 <owl:allValuesFrom rdf:resource="#Targeted_Camera"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasInputDevice"/> <owl:someValuesFrom rdf:resource="#Keyboard"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Platform --> <owl:Class rdf:about="#Platform"> <rdfs:subClassOf rdf:resource="#Action"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Level"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasEntityManipulationMethod"/> <owl:someValuesFrom rdf:resource="#Direct_Manipulation"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Lives"/> </owl:Restriction> </rdfs:subClassOf>
  • 9. Game Ontology 9 <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasCharacterType"/> <owl:someValuesFrom rdf:resource="#Fictional"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Gameworld_Exhaustion"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Puzzle"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Wave"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Difficulty_Levels"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/>
  • 10. 10 <owl:someValuesFrom rdf:resource="#Bonus_Stage"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasTimeSegmentation"/> <owl:someValuesFrom rdf:resource="#Rounds"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:allValuesFrom> <owl:Class> <owl:unionOf rdf:parseType="Collection"> <rdf:Description rdf:about="#2-Dimensional_Gameplay"/> <rdf:Description rdf:about="#3-Dimensional_Gameplay"/> </owl:unionOf> </owl:Class> </owl:allValuesFrom> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Boss_Challenge"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasGameplayRules"/> <owl:someValuesFrom rdf:resource="#Mission"/> </owl:Restriction> </rdfs:subClassOf>
  • 11. Game Ontology 11 </owl:Class> <!-- /////////////////////////////////////////////////////// //////////////////////////////// // // Individuals // /////////////////////////////////////////////////////// //////////////////////////////// --> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Alex_Mercer --> <Fictional rdf:about="#Alex_Mercer"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Prototype"/> </Fictional> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Alistair --> <Fictional rdf:about="#Alistair"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Dragon_Age:_Origins"/> </Fictional> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Antharas --> <Fictional_NPC rdf:about="#Antharas"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Lineage_2"/> </Fictional_NPC>
  • 12. 12 <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Avatar_:_The_Game --> <Adventure rdf:about="#Avatar_:_The_Game"> <rdf:type rdf:resource="&owl;Thing"/> </Adventure> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Baal --> <Fictional_NPC rdf:about="#Baal"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Diablo"/> </Fictional_NPC> <Historically_Accurate_NPC rdf:about="#George_Washington"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Civilization_IV"/> </Historically_Accurate_NPC> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Gordon_Freeman --> <Fictional rdf:about="#Gordon_Freeman"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Half_Life_- _Episode_2"/> </Fictional>
  • 13. Game Ontology 13 <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Half_Life_-_Episode_2 --> <owl:Thing rdf:about="#Half_Life_-_Episode_2"> <rdf:type rdf:resource="#First_Person_Shooter"/> </owl:Thing> <!-- http://www.semanticweb.org/ontologies/2010/0/GameOntolo gy.owl#Jake_Sully --> <Fictional rdf:about="#Jake_Sully"> <rdf:type rdf:resource="&owl;Thing"/> <isCharacterFrom rdf:resource="#Avatar_:_The_Game"/> </Fictional> 4 Game ontology queries The result will be all the individuals from Shooter class (all games of type Shooter) that have a Mouse for the Input Device. This is a characteristic for First Person Shooter games and so the query will return all the games of this type.
  • 14. 14 The result will be all the Characters that belong to a type of game that has First Person Point of View. This characteristic is specific for adventure type games, so the query will return characters from the games Prototype, Avatar and Half Life: Episode 2, Alex Mercer and Jake Sully. The result will be all the Characters that belong to a type of game that offers the possibility to the gamer of moving his character and to detect collisions with other objects. These features are specific to adventure type games and the query will return the characters from the games Prototype and Avatar, Alex Mercer and Jake Sully. The result will be all the games whose Objectives can be completed through Score and Time. This is a characteristic for Real Time Strategy games, the query will return games of this type, Command and Conquer: Red Alert 3.
  • 15. Game Ontology 15 References 1. http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/ 2. http://protegewiki.stanford.edu/index.php/DLQueryTab 3. http://www.co-ode.org/resources/reference/manchester_syntax/ 4. http://protegewiki.stanford.edu/index.php/Protege4GettingStarted 5. http://protegewiki.stanford.edu/index.php/Protege4UserDocs 6. http://www.gamespot.com/games.html?type=games&platform=5&mode=top &tag=subnav;all