I think that…


Game design idea for Minecraft-style game

Filed under: Uncategorized — Jiří Procházka @ 01:40

Some time in 2009 emerged an indie game which was nothing short of revolutionary – Minecraft. Open sandbox style of game where in a voxel based world of same size boxes you mine, build and explore. Minecraft players generally build awesome/funny structures or explore randomly generated world.

Minecraft screenshot


Problem with Minecraft is, that the explorer kind of players have very little to do soon on their world, since even if the environment random generation algorithm is good, it is still an algorithm with a limited possibilities. On the other hand the players in creative mood have quite limited options of sharing their creations for admiration etc. while they have it on their multiplayer server, players from other servers never get to see them unless they visit it and they are subject to griefing. I got an idea how to combine these two styles of play to work in synergy, providing potentially infinite fun!

In general

The idea in general is to make content creation and sharing of it very easy, mostly affecting environment random generation. In creative mood players could create structures like shrines, dungeons, towns or even maybe quests and challenges, sharing it globally with whole community (ideally in decentralized manner). Server administrators could then choose those components to be integrated into their server, by the environment generation algorithm, or they could use some semi-automated server administration tool, which would automatically search the community repositories of components for those which fit the servers demand (no spaceships on medieval fantasy servers). Players then would explore the world, where there would be incorporated components made by other players, each world being different, given enough components: infinite fun.

Minetest screenshot


I don’t really care what game will use such design if I could play it (will be grateful for attribution), but best would it be if it was some open-source Minecraft clone (running on linux), thus allowing most flexibility and crazy ideas incorporated, like the already very good Minetest which is coded in C++ and much faster then Minecraft. I really don’t have time for developing it myself, so the fame is waiting on someone else. What I might help with could be the content distribution system, since that is consistent with my current work interests and specialization.

Suggested detailed vision

The core of environment random generation should ideally be done by scripts, which could be then easily shareable between server owners, possibly someone could make a sharing platform for this. There would be several aspects to cover:

  1. Ecosystems (bioms)
    Define with what ecosystems they can neighbour and how (vertical position), what kinds of ground blocks, vegetation, NPCs they can contain. They act as filler between:
  2. Locations
    Define in what ecosystem they can be placed.

    1. Random generated
      Similar to ecosystems, but different, with more special rules. Probably not scriptable but hardcoded. Define what other locations they can contain. Examples: dungeons, towns…
    2. Fixed
      Contain game objects, define how many times they can be generated. Ideally created in game, scripted stuff like chest loot, scripted NPCs… Examples: boss locations, quest location, like shrines, towns, city parts, houses…

Important is that the creation of locations could be easy, people would be able to share the locations and explore infinite unique world, made possible only by random environment generation and crowdsourcing of interesting locations.

Export mechanism

Suggested export mechanism visualization - the special (just rock here) blocks would define the edges of the block to export

Other then exploring, great would be to collect loot and fight monsters and bosses… I’d love to have system which would make me jumping by joy of randomly finding an awesome rare item, something I didn’t experience since Diablo 2 which should be main inspiration for the item finding system.


Semantic Web Introduction

Filed under: Semantic Web — Jiří Procházka @ 12:25

This a general introduction/overview of the Semantic Web world I wrote for [http://zdrojak.root.cz/clanky/uvod-do-semantickeho-webu/ zdrojak.root.cz] (czech). The audience are general web developers. Feel free to comment.

In the text I avoid using general term “semantic web” and use “Semantic Web” as a term which means usage of RDF as main model for information representation.

Idea of Semantic Web is old more than ten years, however still not too well known, but recently this has changed. So what Semantic Web is, what it is composed of and what it could be useful for?

In a world, where information on the web are published using Semantic Web technologies, when you need to visit your dentist, you don’t have to use various search engines to get to his website, to find out the opening hours, but your intelligent calendar application finds out to which dentist you are registered, compares his opening hours with your timetable, fixes up the transportation and proposes you the suggestions. Of course this is a very idealistic vision, but possible.

[http://www.w3.org/2001/sw/ Semantic web] is a label for a group of technologies, which allow information on the web be expressed in such way so they are comprehensible not only by humans, but also by machines, well mainly the software running on them. It was initiated by [http://en.wikipedia.org/wiki/Tim_Berners-Lee Tim Berners-Lee] and [http://en.wikipedia.org/wiki/World_Wide_Web_Consortium W3C], who still are leaders of development in this area. Semantic web is not a competition to current web, but an addition, improving utilization of the potential which networks such as Internet have. HTML describes documents and relations between them, on the other side the purpose of Semantic Web technologies is description of anything (people, things, services, events, roles…) and their relations. Such network is called Semantic web, Web of Data, Giant Global Graph, or even Web 3.0.

The basic Semantic Web technologies are RDF, RDFS, OWL and SPARQL.
[http://www.w3.org/TR/rdf-primer/ RDF] ([http://www.w3.org/2007/02/turtle/primer/ Turtle version]) defines model of expressing information, which are formulated using triple “subject predicate object”, where predicate defines relation between subject and object. Identifiers, or “words” forming these “sentences”, are [http://en.wikipedia.org/wiki/Uniform_Resource_Identifier URI]s. A set of triples forms a RDF graph. RDF alone is just a model, which uses has many serializations for textual representation – the oldest [http://www.w3.org/TR/rdf-syntax-grammar/ RDF/XML], then we have [http://www.w3.org/TR/xhtml-rdfa-primer/ RDFa] for integration of RDF inside HTML, well readable [http://www.w3.org/TeamSubmission/turtle/ Turtle], primitive [http://www.w3.org/TR/rdf-testcases/#ntriples N-Triples] and others…
To be of any use, we need to give our “words” some meaning. Exactly for this there are ontologies, RDF vocabularies, alias RDF schemas, for example [http://www.foaf-project.org/ FOAF] ([http://xmlns.com/foaf/spec/ spec.]), [http://sioc-project.org/ SIOC] ([http://rdfs.org/sioc/spec/ spec.]), [http://www.heppnetz.de/projects/goodrelations/ GoodRelations] ([http://www.heppnetz.de/projects/goodrelations/primer/ spec.])… These are defined using [http://www.w3.org/TR/rdf-schema/ RDFS] and more complex [http://www.w3.org/TR/owl2-primer/ OWL], which themselves are ontologies too.
[http://www.w3.org/TR/rdf-sparql-query/ SPARQL] is a language originating from SQL meant for manipulation, primarily querying, of RDF databases alias [http://en.wikipedia.org/wiki/Triplestore triplestores].
[http://microformats.org/ Microformats] are related to Semantic Web technologies and data can be easily extracted from them to RDF using [http://www.w3.org/TR/grddl-primer/ GRDDL], however are not as flexible as RDFa.
[http://linkeddata.org/ Linked data] is a name for a few principles, which try to ensure some level of usefulness of information (creating subset of Semantic Web). Community project [http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData/ Linking Open Data] publishes open databases as linked data, best example being [http://dbpedia.org/About DBpedia] which is a dataset of information extracted from Wikipedia.

In some industries such as health-care and life sciences and gas and oil industries these technologies have gained wide acceptance because of need for sharing information with clearly defined terms and automatic inference of additional data.
Implicit decentralization of Semantic Web technologies is used for tearing down the walls of social networks like Facebook, Myspace etc. by RDF data using [http://www.foaf-project.org/ FOAF] ontology, with which every server can act as a FOAF profile hosting, creating one big open decentralized social network. Because not all information should be available to everyone, a [http://esw.w3.org/topic/WebAccessControl WebAccessControl] system was created, which uses authentication protocol [http://esw.w3.org/topic/foaf+ssl FOAF+SSL], which is faster and simpler than [http://openid.net/ OpenID] and in most cases even more user friendly (no need to remember your username/ID or password, just have your certificate).

[http://www.techcrunch.com/2008/03/13/yahoo-embraces-the-semantic-web-expect-the-web-to-organize-itself-in-a-hurry/ Yahoo] and [http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html Google] utilize RDF data for improving search results. There are projects of semantic desktop on Linux by [http://nepomuk.semanticdesktop.org/xwiki/bin/view/Main1/ KDE] and [http://live.gnome.org/SemanticDesktop Gnome]. [http://drupaleasy.com/blogs/ultimike/2009/06/rdf-drupal-future-rdf-drupal-7 Drupal 7 is going to publish it’s internal data in RDF].

Semantic Web will never reach widespread awareness of general public, and it shouldn’t, because it’s representation of internal information. RDF was created as answer to demand for unified model for information exchange in decentralized heterogeneous network of systems. If you are developing an application, publish the information which you want to be shared in RDF. Development of Semantic Web has 3 branches:

1. Technology development
2. Publishing of information using the technologies
3. Development of applications and automated agents working with the information

The first phase, when the development was centered around the first branch, is the past, now is the time to cultivate the second branch, because without it, the third phase cannot come into blossom and that is our goal – simplification of our everyday life.
Semantic web has great potential, but fame and wealth for taking advantage of it in an innovative way won’t just come to you on it’s own, it is for you to make it.

Powered by WordPress