opensource.google.com

Menu
Showing posts with label games. Show all posts
Showing posts with label games. Show all posts

Semantic Reactor: A tool for experimenting with NLU models

Friday, March 27, 2020

Companies are using natural language understanding (NLU) to create digital personal assistants, customer service bots, and semantic search engines for reviews, forums and the news.

However, the perception that using NLU and machine learning is costly and time consuming prevents a lot of potential users from exploring its benefits.

To dispel some of the intimidation of using NLU, and to demonstrate how it can be easily used with pre-trained, generic models, we have released a tool, the Semantic Reactor, and open-sourced example code, The Mystery of the Three Bots.

The Semantic Reactor

The Semantic Reactor is a Google Sheets Add-On that allows the user to sort lines of text in a sheet using a variety of machine-learning models. It is released as a whitelisted experiment, so if you would like to check it out, fill out this application at the Google Cloud AI Workshop. Once approved, you’ll be emailed instructions on how to install it.

The tool offers ranking methods that determine how the list will be sorted. With the semantic similarity method, the lines more similar in meaning to the input will be ranked higher.



With the input-response method, the lines that are the most appropriate conversational responses are ranked higher.

Why use the Semantic Reactor?

There are a lot of interesting things you can do with the Semantic Reactor, but let’s look at the following two:
  • Writing dialogue for a bot that exists within a well-defined environment and has a clear purpose (like a customer service bot) using semantic similarity.
  • Searching within large collections of text, like from a message board. For that, we will use input-response.

Writing Dialogue for a Bot Using Semantic Similarity

For the sake of an example, let’s say you are writing dialogue for a bot that answers questions about a product, in this case, cookies.

If you’ve been running a cookie hotline for a while, you probably can list the most common cookie questions. With that data, you can create your cookie bot. Start by opening a Google Sheet and writing the common questions and answers (questions in the A column, answers in the B).

Here is the start of what that Sheet might look like. Make a copy of the Sheet, which will allow you to use the Semantic Reactor Add-on. Use the tool to experiment with new QA pairs and how each model reacts to them.

Here are a few queries to try, using the semantic similarity rank method:

Query: What are cookie ingredients?
Returns: What are cookies made of?

Query: Are cookies biscuits?
Returns: Are cookies also called biscuits?

Query: What should I serve with cookies?
Returns: What drinks go well with cookies?



Of course, that small list of responses won’t cover many of the questions people will ask your cookie bot. What the Reactor allows you to do is quickly add new QA pairs as you learn about what your users want to ask.

For example, maybe people are asking a lot about cookie calories.

You’d write the new question in column A, and the new answer in column B, and then test a few different phrasings with the Reactor. You might need to tweak the target response a few times to make sure it matches a wide variety of phrasings. You should also experiment with the three different models to see which one performs the best.

For instance, let’s say the new target question you want the model to match to is: “How many calories does a typical cookie have?”

That question might be phrased by users as:
  • Are cookies caloric?
  • A lot of calories in a cookie?
  • Will cookies wreck my diet?
  • Are cookies fattening?


The more you test with live users, the more you’ll find that they phrase their questions in ways you don’t expect. As with all things based on machine learning, constantly refreshing data, testing and improvement is all part of the process.

Searching Through Text Using Input-Response

Sometimes you can’t anticipate what users are going to ask, and sometimes you might be dealing with a lot of potential responses, maybe thousands. In cases like that, you should use the input-response ranking method. That means the model will examine the list of potential responses and then rank each one according to what it thinks is the most likely response.

Here is a Sheet containing a list of simple conversational responses. Using the input-response ranking method, try a few generic conversational openers like “Hello” or “How’s it going?”

Note that in input-response mode, the model is predicting the most likely conversational response to an input and not the most semantically similar response.

Note that “Hello,” in input-response mode, returns “Nice to meet you.” In semantic similarity mode, “Hello” returns what the model thinks is semantically closest to “Hello,” which is “What’s up?”

Now try your own! Add potential responses. Switch between the models and ranking methods to see how it changes the results (be sure to hit the “reload” button every time you add new responses).

Example Code

One of the models available on TensorFlow Hub is the Universal Sentence Encoder Lite. It’s only 1.6MB and is suitable for use within websites and on-device applications.

An open sourced sample game that uses the USE Lite is Mystery of the Three Bots on Github. It’s a simple demonstration that shows how you can use a small semantic ML model to drive conversations with game characters. The corpora the game uses were created and tested using the Semantic Reactor.

You can play a running version of the game here. You can experiment with the corpora of two of the characters, the Maid and the Butler, contained within this Sheet. Be sure to make a copy of the Sheet so you can edit and add new QA pairs.

Where To Get The Models Used Within The Semantic Reactor

All of the models used in the Semantic Reactor are published and available online.
  • Local – Minified TensorFlow.js version of the Universal Sentence Encoder.
  • Basic Online – Basic version of the Universal Sentence Encoder.
  • Multilingual Online – Universal Sentence Encoder trained on question/ answer pairs in 16 languages.

Final Thoughts

These language models are far from perfect. They use their training to give a best estimate on what to return based on the list of responses you gave it. Machine learning is about calculation, prediction, and training. Models can be improved over time with more data and tuning, and in turn, be made more accurate.

Also, because conversational models are trained on dialogue between people, and because people are biased, the models will display biases that exist in the data that they were trained on, sometimes in ways you can’t predict. For more on model bias, and more detail about how these models were trained, see the Semantic Experiences for Developers page.

By Ben Pietrzak, Steve Pucci, Aaron Cohen — Google AI  

Making Great Mobile Games with Firebase

Tuesday, August 15, 2017

So much goes into building and maintaining a mobile game. Let’s say you want to ship it with a level builder for sharing content with other players and, looking forward, you want to roll out new content and unlockables linked with player behavior. Of course, you also need players to be able to easily sign into your soon-to-be hit game.

With a DIY approach, you’d be faced with having to build user management, data storage, server side logic, and more. This will take a lot of your time, and importantly, it would take critical resources away from what you really want to do: build that amazing new mobile game!

Our Firebase SDKs for Unity and C++ provide you with the tools you need to add these features and more to your game with ease. Plus, to help you better understand how Firebase can help you build your next chart-topper, we’ve built a sample game in Unity and open sourced it: MechaHamster. Check it out on Google Play or download the project from GitHub to see how easy it is to integrate Firebase into your game.
Before you dive into the code for Mecha Hamster, here’s a rundown of the Firebase products that can help your game be successful.

Analytics

One of the best tools you have to maintain a high-performing game is your analytics. With Google Analytics for Firebase, you can see where your players might be struggling and make adjustments as needed. Analytics also integrates with Adwords and other major ad networks to maximize your campaign performance. If you monetize your game using AdMob, you can link your two accounts and see the lifetime value (LTV) of your players, from in-game purchases and AdMob, right from your Analytics console. And with Streamview, you can see how players are interacting with your game in realtime.

Test Lab for Android - Game Loop Test

Before releasing updates to your game, you’ll want to make sure it works correctly. However, manual testing can be time consuming when faced with a large variety of target devices. To help solve this, we recently launched Firebase Test Lab for Android Game Loop Test at Google I/O. If you add a demo mode to your game, Test Lab will automatically verify your game is working on a wide range of devices. You can read more in our deep dive blog post here.

Authentication

Another thing you’ll want to be sure to take care of before launch is easy sign-in, so your users can start playing as quickly as possible. Firebase Authentication can help by handling all sign-in and authentication, from simple email + password logins to support for common identity providers like Google, Facebook, Twitter, and Github. Just announced recently at I/O, Firebase also now supports phone number authentication. And Firebase Authentication shares state cross-device, so your users can pick up where they left off, no matter what platforms they’re using.

Remote Config

As more players start using your game, you realize that there are few spots that are frustrating for your audience. You may even see churn rates start to rise, so you decide that you need to push some adjustments. With Firebase Remote Config, you can change values in the console and push them out to players. Some players having trouble navigating levels? You can adjust the difficulty and update remotely. Remote Config can even benefit your development cycle; team members can tweak and test parameters without having to make new builds.

Realtime Database

Now that you have a robust player community, you’re probably starting to see a bunch of great player-built levels. With Firebase Realtime Database, you can store player data and sync it in real-time, meaning that the level builder you’ve built can store and share data easily with other players. You don't need your own server and it’s optimized for offline use. Plus, Realtime Database integrates with Firebase Auth for secure access to user specific data.

Cloud Messaging & Dynamic Links

A few months go by and your game is thriving, with high engagement and an active community. You’re ready to release your next wave of new content, but how can you efficiently get the word out to your users? Firebase Cloud Messaging lets you target messages to player segments, without any coding required. And Firebase Dynamic Links allow your users to share this new content — or an invitation to your game — with other players. Dynamic Links survive the app install process, so a new player can install your app and then dive right into the piece of content that was shared with him or her.

At Firebase, our mission is to help mobile developers build better apps and grow successful businesses. When it comes to games, that means taking care of the boring stuff, so you can focus on what matters — making a great game. Our mobile SDKs for C++ and Unity are available now at firebase.google.com/games.

By Darin Hilton, Art Director

Pie in your face — without the mess

Thursday, May 21, 2015

Fun Propulsion Labs at Google is back with an exciting new release for game developers. We’ve updated Pie Noon (our open source Android game) to add support for Google Cardboard, letting you jump into the action directly using your Android phone as a virtual reality headset! Select your targets by looking at them and throw pies with a flick of the switch.

Look out for incoming pie!

We used the Cardboard SDK for Android, which helps simplify common virtual reality tasks like head tracking, rendering for Cardboard, and handling specialized input events. And you might remember us from before, bringing exciting game technologies like FlatBuffers, Pindrop, and Motive, all of which you can see in use in Pie Noon.

You can grab the latest version of Pie Noon on Google Play to try it out, or crack open the source code and take a look at how we brought an existing game into virtual reality.

By Anthony Maurice, Fun Propulsion Labs at Google

We throw pie with a little help from our friends

Thursday, April 9, 2015

(Cross-posted with the Google Developers Blog)

Fun Propulsion Labs at Google* is back today with some new releases for game developers. We’ve updated Pie Noon (our open source Android TV game) with networked multi-screen action, and we’ve also added some delicious new libraries we’ve been baking since the original release: the Pindrop audio library and the Motive animation system.

Pie Noon multi-screen action

Got an Android TV and up to 4 friends with Android phones or tablets? You’re ready for some strategic multi-player mayhem in this updated game mode. Plan your next move in secret on your Android phone: will you throw at an opponent, block an incoming attack, or take the risky approach and wait for a larger pie? Choose your target and action, then watch the Android TV to see what happens!

We used the NearbyConnections API from the most recent version of Google Play Games services to easily connect smartphones to your Android TV and turn our original Pie Noon party game into a game of turn-based strategy. You can grab the latest version of Pie Noon from Google Play to try it out, or crack open the source code and take a look at how we used FlatBuffers to encode data across the network in a fast, portable, bandwidth-efficient way.

Pindrop: an open source game audio library

Pindrop is a cross-platform C++ library for managing your in-game audio. It supports cross compilation to Android, Linux, iOS and OSX. An early version of this code was part of the first Pie Noon release, but it’s now available as a separate library that you can use in your own games. Pindrop handles loading and unloading sound banks, tracking sound locations and listeners, prioritization of your audio channels, and more.

Pindrop is built on top of several other pieces of open source technology:

  • SDL Mixer is used as a backend for actually playing the audio.
  • The loading of data and configuration files is handled by our serialization library, FlatBuffers.
  • Our own math library, MathFu, is used for a number of under-the-hood calculations.

You can download the latest open source release from our GitHub page. Documentation is available here and a sample project is included in the source tree. Please feel free to post any questions in our discussion list.

Motive: an open source animation system

The Motive animation system can breathe life into your static scenes. It does this by applying motion to simple variables. For example, if you’d like a flashlight to shine on a constantly-moving target, Motive can animate the flashlight so that it moves smoothly yet responsively.

Motive animates both spline-based motion and procedural motion. These types of motion are not technically difficult, but they are artistically subtle. It's easy to get the math wrong. It's easy to end up with something that moves as required but doesn't quite feel right. Motive does the math and lets you focus on the feeling.

Motive is scalable. It's designed to be extremely fast. It also has a tight memory footprint -- smaller than traditional animation compression -- that's based on Dual Cubic Splines. Our hope is that you might consider using Motive as a high-performance back-end to your existing full-featured animation systems.

This initial release of Motive is feature-light since we focused our early efforts on doing something simple very quickly. We support procedural and spline-based animation, but we don't yet support data export from animation packages like Blender or Maya. Motive 1.0 is suitable for props -- trees, cameras, extremities -- but not fully rigged character models.  Like all FPL technologies, Motive is open source and cross-platform. Please check out the discussion list, too.

What’s Fun Propulsion Labs at Google?

You might remember us from such Android games as Pie Noon, LiquidFun Paint, and VoltAir, and such cross-platform libraries as MathFu, LiquidFun, and FlatBuffers.

Want to learn more about our team? Check out this recent episode of Game On! with Todd Kerpelman for the scoop!

by Jon Simantov, Fun Propulsion Labs at Google

* Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

FlatBuffers 1.1: a memory-efficient serialization library

Thursday, April 2, 2015

After months in development, the FlatBuffers 1.1 update is here. Originally released in June 2014, it’s a highly efficient open source cross-platform serialization library that allows you to read data without parsing/unpacking or allocating additional memory. It supports schema evolution (forwards/backwards compatibility) and optional JSON conversion. We primarily created it for games written in C++ where performance is critical, but it’s also useful more broadly. This update brings:


  • an extensive overhaul to the Java API
  • out-of-the-box support for C# and Go
  • an optional verifier to make FlatBuffers practical in untrusted scenarios
  • .proto parsing for easier migration from Protocol Buffers
  • optional manual assignment of field IDs
  • dictionary functionality through binary search on a key field
  • bug fixes and other improvements thanks to 200+ commits from 28 contributors -- thank you!


Download the latest release from our github page and join our discussion list for more details.

By Wouter van Oortmerssen, Fun Propulsion Labs at Google*

*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

Coding Android TV games is easy as pie

Wednesday, November 19, 2014

(cross-posted with the Android Developers Blog)


We’re pleased to announce Pie Noon, a simple game created to demonstrate multi-player support on the Nexus Player, an Android TV device. Pie Noon is an open source, cross-platform game written in C++ which supports

  • up to 4 players using Bluetooth controllers.
  • touch controls.
  • Google Play Games Services sign-in and leaderboards.
  • other Android devices (you can play on your phone or tablet in single-player mode, or against human adversaries using Bluetooth controllers).


Pie Noon serves as a demonstration of how to use the SDL library in Android games as well as Google technologies like Flatbuffers, Mathfu, fplutil, and WebP.






You can download the game in the Play Store and the latest open source release from our GitHub page. We invite you to learn from the code to see how you can implement these libraries and utilities in your own Android games. Take advantage of our discussion list if you have any questions, and don’t forget to throw a few pies while you’re at it!


By Alex Ames, Fun Propulsion Labs at Google*



* Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.


Geometry Math Library for C++ Game Developers: MathFu

Thursday, November 13, 2014

(Cross-posted with the Google Developers Blog)

Today we're announcing the 1.0 release of MathFu, a cross-platform geometry math library for C++ game developers.  MathFu is a C++ math library developed primarily for games focused on simplicity and efficiency.


It provides a suite of vector, matrix and quaternion classes to perform basic geometry suitable for game developers.  This functionality can be used to construct geometry for graphics libraries like OpenGL or perform calculations for animation or physics systems.


The library is written in portable C++ with SIMD compiler intrinsics and has been tested on Android, Linux, OS X and Windows.


You can download the latest open source release from our GitHub page.  We invite you to contribute to the project and join our discussion list!


By Stewart Miles, Fun Propulsion Labs at Google*


*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.


Flowing into your games: LiquidFun 1.1

Thursday, July 17, 2014

We are thrilled to announce the 1.1 release of LiquidFun, an open-source 2D physics engine. It adds particle simulation to Erin Catto’s popular Box2D engine, and can be used as a drop-in replacement for Box2D. If your program is written in C++, Java, or JavaScript, you can easily use LiquidFun.

Today’s release adds some exciting new features to LiquidFun. Some highlights:

  • LiquidFun now runs in your browser! Using Emscripten, we’ve translated LiquidFun into JavaScript. You can see LiquidFun’s Testbed application, rewritten in JavaScript, running on our landing page.
  • We’ve added iOS support for LiquidFun’s internal Testbed and EyeCandy applications. Earlier versions of LiquidFun could be made to run on iOS, but iOS is now officially supported.
  • We’ve optimized LiquidFun's particle simulation. In particular, we’ve written NEON (a.k.a., Advanced SIMD) code to improve performance on ARM processors.
  • We’ve stabilized the simulation, fixed bugs, and added some cool new functions, including one that automatically splits a particle group into multiple, disjoint particle groups. 
  • We’ve clarified and improved the documentation, thanks to questions from the LiquidFun community.

LiquidFun Games

The 1.1 release also includes two physics-based, open-source games from Google, currently available in the US Play Store.

VoltAir, written in C++, is a fast platformer based on a compelling physics system, plenty of speed and motion, and interesting puzzles. If you’re a native developer, VoltAir’s source code is a great example of how to use LiquidFun.














The second game, LiquidFun Paint, lets you create art that moves, shakes, and delights. It is written in Java, and uses LiquidFun via SWIG bindings. If you’re a Java programmer, you may want to peruse the source code of LiquidFun Paint.



Several other games also have incorporated LiquidFun since its initial 0.9 release last December. One such game is the beautiful Battle of the SeaSons, written by three students from the technology university ETH Zurich.


Adoption

Our March 2014 release of LiquidFun 1.0 has already been integrated into several game development toolkits.
  • LiquidFun is also now a built-in component of the Lobster game programming language. 

Inside LiquidFun

If you’d like to learn even more about how the LiquidFun particle simulation works, you may enjoy our new presentation describing the tech and algorithms, Inside LiquidFun.

By Jason Sanmiya, Fun Propulsion Labs at Google*

*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

FlatBuffers: a memory efficient serialization library

Monday, June 16, 2014

Today, we are releasing FlatBuffers, a C++ serialization library that allows you to read data without unpacking or allocating additional memory, as an open source project.

FlatBuffers stores serialized data in buffers in a cross-platform way, supporting format evolution that is fully forwards and backwards compatible through a schema. These buffers can be stored in files or sent across the network as-is, and accessed in-place without parsing overhead.

The FlatBuffers schema compiler and runtime is written in platform independent C++ with no library dependencies outside the STL, which makes it possible to use on any platform that has a C++ compiler. We have provided methods to build the FlatBuffers library, example applications, and unit tests for Android, Linux, OSX and Windows.

The schema compiler can generate code to read and write FlatBuffers binary files for C++ and Java. It can additionally parse JSON-formatted data into type-safe binaries.

Game developers can use this library to store game data with less overhead than alternative solutions (e.g. Protocol Buffers or JSON).  We’re excited about the possibilities, and want to hear from you about how we can make this even better!

Download the latest release from our github page and join our discussion list!

By Wouter van Oortmerssen, Fun Propulsion Labs at Google*

*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

Open Source Release: LiquidFun 1.0

Tuesday, March 18, 2014

Last December we announced the initial release of LiquidFun, a C++ library that adds particle physics, including realistic fluid dynamics, to the open-source Box2D. Today, we’re excited to be releasing LiquidFun 1.0!

New features in this release include:
  • Multiple particle systems
  • New particle behaviors: barrier, static-pressure, and repulsive
  • Particle lifetimes
  • Detection of stuck particles
  • The ability to apply forces and impulses to particles
  • Java support via SWIG
  • A host of new demos: inside the existing Testbed application; and, a gorgeous new “EyeCandy” demo for Android
Download the latest release from our github page and join our discussion list!

Several Googlers made LiquidFun possible: Howard Berkey, Alice Ching, Wolff Dobson, Dave Friedman, Stewart Miles, Jason Sanmiya, Kentaro Suto, and Ali Tahiri.

By Dave Friedman, Fun Propulsion Labs*

*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

LiquidFun: a rigid-body physics library with fluid simulation

Wednesday, December 11, 2013

We are excited to announce the open-source release of LiquidFun, a C++ 2D physics library based upon Box2D that includes particle-based fluid simulation.

LiquidFun makes it easier for developers to write games that include realistic fluid physics.  For example, this clip shows a circular body falling into a viscous fluid.
The LiquidFun library is written in platform independent C++ which makes it possible to use on any platform that has a C++ compiler.  We have provided a method to build the LiquidFun library, example applications, and unit tests for Android, Linux, OSX and Windows.

Game developers can use physics to drive new game mechanics and add realistic physics.  Designers can use this library to build beautiful fluid interactive experiences.  We’re excited about the possibilities, and want to hear from you about how we can make this even better!

Download the latest release from our github page and join our discussion list!

Several Googlers made LiquidFun possible: Alice Ching, Wolff Dobson, Dave Friedman, Vince Harron, Stewart Miles, Jason Sanmiya, Kentaro Suto, and Ali Tahiri.

By Stewart Miles, Google engineer

FreedroidRPG Google Summer of Code Students Stand Up to the Bots

Monday, March 19, 2012


FreedroidRPG is an open-source role playing game that has been around for a few years, written by a dedicated small team. The project participated in the Google Summer of Code program in both 2010 and 2011 with a total of 7 students over the two years, and we set out to offer the best possible learning experience for our students. Our goals were twofold: we wanted to acquire new, regular contributors, and we wanted to share our passion for writing a free software game. Our participation in Google Summer of Code was quite a success and taught us a lot about how to make newcomers feel welcome and encourage them to speak their mind and contribute.

Mentoring students requires a lot of time and patience, so your project participants have to be ready to invest a significant amount of time. As with all investments, it may or may not turn out to be “profitable” - many people are attracted to game development but after they’ve taken part they realize that it’s not as easy as they thought. As a result, it is to be expected that not every student will be a good match for your project - not all students will stay after the program ends. Our advice to mentors is to define precisely what the goals of the project’s participation in Google Summer of Code are. Only when you know what you want can you accurately drive your project in the right direction.

This year, we made the decision not to apply to Google Summer of Code for a couple of reasons. The first is that we feel that other organizations deserve their turn and after two summers and a presentation at FOSDEM’12, FreedroidRPG appears to be quite a relevant open source game, and others should be given a chance to acquire the kind of success that we’ve had. The second is that the mentors have spent the last two years investing their time mentoring students and did not have much chance to actually write any computer code. We like free software a lot which is why we don’t wish to stop writing code and spend all of our time mentoring students. So in 2012 we will be taking care of our own passion for code, hopefully coming back in future years to Google Summer of Code with exciting new project ideas and top-level mentors!

We believe that video games are a great way to discover the world of computer programming because it is appealing to so many of us. At FOSDEM’12, I made a presentation in the games developer room aimed at showing a few of the technical problems that we face every day when writing FreedroidRPG. Hopefully the video can help the readers understand why I love writing games so much.

By Arthur Huillet, FreedroidRPG lead developer and Google Summer of Code mentor/org admin

Below is the testimony from Alexander Solovets, one of our students from Google Summer of Code 2010. He worked on a project called “random dungeon generation”, and I’ll let him explain what it was and how he feels about Google Summer of Code.
I heard about Google Summer of Code for the first time two years ago. I was finishing my senior year at university and was looking for a summer occupation. After reading the announcement of Google Summer of Code I thought it would be great: there was no need to relocate, I could work on open-source projects and solve real problems all in the same role. I started reading articles describing the experience that students had in previous years. There was a lot to read, but the most helpful advice I learned was that the odds of being selected and successfully completing your project is much higher if you are really interested in the project and organization as a whole. That is how I met Freedroid.

This organization had an ideal combination of algorithms and game development, two things I like a lot. I took a brief look at other organizations and when the time came I applied to FreedroidRPG. Several months earlier a classmate of mine had shown me the NetHack game, which carried me away for a long period (and I still play it from time to time today). The most exciting feature in NetHack was the randomness of all kinds: you would never know what to expect after the next door. I was amazed to see that FreedroidRPG proposed a project called “random dungeon generation” and right then and there I decided that no one but I would work on this project!

I began collaborating with the organization while working on my application document. I tried to elaborate on several parts: project decomposition on sub-tasks, time schedule, algorithms description. My would-be mentor asked potential participants to complete small tasks of their choice in order to confirm their ability to work with the code, a common practise among free software organizations. There was also a technical interview over IRC which is a bit unusual for Google Summer of Code and is not strictly required, but it was very interesting for me and very helpful as it turned out. Generally speaking, the student selection process varies a lot and depends on the organization.

When I started to work on my project random levels where quite simple, as you can see in the screenshot below.


It was tedious for players to roam within the dungeons so the aim of my project was to make it more clear and I used various techniques in order to do this. First, I split some of the dungeon rooms with a bit of empty space so they did not look adjacent anymore. Next, I made themed rooms that contained various types of objects. Finally, I turned some rooms into corridors so the level did not just look like a bunch of cells. The final look is illustrated below.


The last part of my project was devoted to the brand new random level types - random open areas. Though I initially marked it as an extra project in my plan (a “bonus” project), I managed to complete it before the summer was over. Along with dungeons there are open levels in the game mostly containing natural objects: why can’t we have those be random as well? For generating these levels types I used a fractals-based approach yielding natural looking areas based on an initial shape that is preserved. On the following screenshot you can see how a random level can be generated with a shape describing a path:


Apart from the priceless experience in learning how to write free software, there was another positive element in my participation to Google Summer of Code: I significantly improved my English. The reason was my strict mentor who was adamant on having me correct the grammar mistakes in my code comments as well as in regular chat conversations. I believe I do not have to insist on the importance of English in the field of software development. Finally, I think that the experience and the title of Google Summer of Code student substantially helped me find a full-time job after graduation. I had two on-site interviews with one of the world’s most famous corporations and finally got a great offer from a local company. I wish every student developer had the opportunity to be a Google Summer of Code student at least once.

By Alexander Solovets, Google Summer of Code 2010 student

London Open Source Jam 14

Wednesday, November 4, 2009

We held the 14th Google London Open Source Jam at our Victoria HQ on September 24th. The topic this time was "Video and Sound", and our Jammers had some real treats to share.

Steven Goodwin told us how his open source SGX 3D graphics engine deals with three key problems of other computer game engines. On a similar theme, Themis Bourdenas discussed the vine engine, a modular game engine for 2d and 3d games.

Borys Musielak presented Filmaster, an open source film recommendation engine. Neil Harris told us about an attempt by the Kendra Initiative to foster a common meta data format for content discovery on the semantic web.

In an Open Source Jam first, Jagannathan gave a performance of his Din software musical instrument. Din is designed for playing live Indian music, is based on Bezier curves and really has to be heard to be fully appreciated.

Sam Mbale gave us an update on his projects to help Africans build online communities using open source. Mike Mahemoff discussed some web tools frameworks for intranets, bookmarklets and trails in Scrumptious.

The UK government has plans to introduce a law to allow content-owners to force ISPs to disconnect the internet connection of users suspected of file sharing, without any proof. Glyn Wintle gave us an overview of how the proposed law will affect us, how the Open Rights Group is campaigning against it, and how we can help.

Douglas Squirrel talked about the difficulty blind people have in finding information on websites, and presented BlindPages.com - a new project to reformat the web in a screen-reader friendly way. He also demoed a prototype telephone interface to the service.

Much pizza was eaten and free beer drunk, and we all ended up in the pub next door to continue our discussions. A big thank you to all our speakers and attendees, and we hope to see you at the next Jam!


FOSS Gaming for Friday

Friday, June 13, 2008



Tim Ansell, Google Summer of Code™ mentor and organization administrator for the Thousand Parsec project recently visited Google Mountain View, so we took the opportunity to sit down with him and catch up with him about the universe of FOSS gaming. In Episode 17 of the Summer of Code podcast, you'll hear from Tim about the history of the Thousand Parsec project and how participating in the program has helped grow and shape the project over the past two years. Tim also shares some amazing student commit statistics as discovered while exploring Ohloh and some insights into working with universities to get more students involved with the Thousand Parsec project and Open Source.

You can download the podcast in mp3 or ogg formats. Alternatively, you can subscribe to it.

Many thanks to Tim for joining us for the podcast. If audio-only isn't enough to satisfy your cravings for FOSS gaming, you're in luck. Tim was also kind enough to give a technical talk during his visit and you can check out the video. In Gaming for Freedom, the latest presentation in the Open Source Developers @ Google Speaker Series, you'll get an overview of Free and Open Source games, tips on growing a gaming community and a bit more about Thousand Parsec and Summer of Code.

We always love to hear from you! If there's a particular Google Open Sourcerer you'd like to see give a talk or a particular Summer of Code podcast you'd like to see us produce, post a comment and let us know.

Ed. Note: Updated post to fix a broken link.
.