one more GSoC idea

I have seen the ideas of GSoC for rails and they are quite amazing,
lot of infrastructure work. But I am personally more interested in
working on other kind of idea for GSoC. Something that is maybe of
more direct application.
I was thinking on creating a plugin, web based games framework. A
plugin that adds value and at the same time still remains general
enough so that it can create different types of games is not trivial
at all. And if done well, a community of games creators can grow from
a functionality like that. I'd like avoid flash and use other
technologies instead, this would be a difficult problem also. I have
been thinking about this problem for some time now and I find it quite
exciting and challenging.
In all, I think this web game framework idea is very interesting and I
would very willingly apply as student for that. I would like to know
if someone would like to be mentor for this project and if you think
it is a project that benefits rails and/or the rails ecosystem enough
to get a GSoC slot this year.

I can provide further details and of course this is only a sketch of
the whole thing.

Hi Jordi,

Plugins are certainly welcome, but I'm not sure what a web games
framework entails. It's very open-ended and unclear what it'd provide.
Building a framework from scratch rather than extracting one from
existing games is likely to miss the mark, too, and I see very few
open source Rails web games.

Best,
jeremy

I have submitted already.
My idea is focus in strategy and RPG like games. Very much like
ikariam, travian, fallen sword and a long etcetera.

My draft proposal (later I show that the template for RoR is different
and change proposal slightly) is:

Abstract

Web based gaming has become an important branch of gaming with
advantages as been platform independent and accesible from any
location.
Web games are currently single player, casual flash games or
multiplayer html + javascript based games mostly programmed with PHP.
Ruby and more specifically Ruby on Rails has proven that an strong
framework with sensible defaults and tailored for web programming
needs can improve productivity of web programmers enormously.
The aim of this project is use the Ruby on Rails philosophy and apply
it to web game development, improve the web games programming
landscape (currently mostly lots of PHP code) as Rails improved the
web programming landscape.
Specifically the project will create plugins and facilities to allow
easy creation of games with Ruby language.
The goal is a flexible framework for multiplayer games of the type
strategic game and RPG.

== Detailed description ==

The following no exahustive list are general characteristics found in
RPG or strategy like games:
- Maps. Either world map or the map the player is interacting with or
both. Maps are 2D tiled zoomable canvas connected via portals where
each tile is potentially of a different class where events can happen
(characters, buildings, etc.)
- Characters. Playing and not playing characters will have stats
(strengh, level, etc.), biography, portrait, capabilities in the
world, inventary, AI, etc.
- Buildings. Can have maps and characters inside. Provide special
properties.
- Players. Each player will have his own stats. One or more character
under control, inbox, outbox, notepad, preferences, etc.
- Players' groups. Players can make groups, with in-group and intra-
group comunication capabilities.
- Highscores. From players and players groups. Hall of fame pages,
milestones, etc.
- Artificial Intelligence. Many characters in the world has simple
missions like give information, trade, give quests or exchange items.
Many have path based movement.
- Fight. Fundamental in most games y usually based in simple
parameters and rules.
- Authentification. Authentification must be build in. Also a unique
address for each player, usable to invite other people to the game.
- Resources/inventary.

This project will focus in providing these core functionalities as
time would allow.
Also, it is a priority of the project to create a high quality
framework over create all the functionality mentioned above (long term
goal) . RESTful and MVC technologies will be followed.

== Timeline ==

Till May 26: Community bonding. Discussion on ML and with mentor
over priorities, drafts of the design, create page about the project,
etc.
May 26 - June 12: players : authentification, invitations, players
communication mecanisms (on game and off game), notepad, portrait,
etc.
June 13 - June 23: Map as set of tiles
                    Each tile can potentially have:
                    - Portal to other map (enter in a house for
instance) with or without menu (travel agency)
                    - Characters
                    - Buildings
                    - Events
                    - Tile (or terrain) properties, resources
                    - Visual representation
June 24 - July 2: Basic map functionality and API. Map
definition file loader?
July 2 - July 9 : Buildings and characters (stats, capabilities in
the world), integration on the player and map.
July 10 - August 3: Basic game engine. Trading. story line,
levering up, fight system, resource gathering, inventory gathering,
rewards compensation, etc.
August 4 - August 13: AI, capabilities of characters (tell stories,
trade, etc.)
August 14 - August 20: Documentation and GSoC report

== Technical details ==

Some predefined models are needed for the platform to work. For
instance a model for players.
Thus the platform will define some base models with some basic
properties considered general enough to be useful in a good percentage
of use cases.
For the sake of simplicity, I will choose an authentification/register/
login solution and integrate it with the invitation system.
Each player will have his own URL in the system (derived from the
playername), that can be given when other players register.
With different levels of protection, players will have inbox, outbox,
notepad, portrait, etc resources.

Maps are 2D and tile based, so a simple squema with X/Y data should be
enough. GET will discover extra resources of each tile.
In the GSoC time there will be very basic if any rendering of maps,
etc.

Most of the work will be focused on the game engine. Most controllers
actions will in one way or another call the game engine. It will
ensure the whole is coherent.
It will also get most of the configuration and is responsable of
loading the game data.
For instance the trade system. In the variant where the game sells to
the user (via special shops or characters). The engine loads the
tables from all the asserts available in the game. A Seller base class
has the methods to define what asserts is selling and possible
modifiers to the base properties of the asserts.
The user of the framework will insert in the map a object that inherit
from Seller and select the desired asserts.

== Project extra functionality ==

Some functionalities that surely will be impossible to implement in
GSoC time are:
- Players' groups
- Highscores
- Path based movements

Also, as stated, some functionalities may be sacrified for estability
or quality of the platform.

== Profit for Ruby and Ruby on Rails ==

Rails can become the obvious platform of choice when it comes to
deploying web based games.
The aim of the project is 3-fold:
- Sucessfully create a basic platform worth of GSoC
- Create a long time project. GSoC will act as kickoff of the
platform. It is hoped that by September the platform attracts some
more contributors
- Create a community of game builders over the platform sharing
information and solutions (that eventually will flow down to the
platform itself much like rails itself)

Ruby can be a pretty amazing programming language for games (the
instropection functionality of objects itself is amazing) but there
are not may resources in the web front. This project aims at solving
this issue.

== Success Criteria ==

Create a basic usable platform. Ideally, all the tasks listed in the
timeline should be accomplished.

== Availability ==
Except from June where I will be only available for one week, from May
to September I can work on this project around 30 hours/week, most of
the rest of my time will be dedicated to work on the related project
explained below.

== Biography ==

My name is Jordi Polo Carres (mumismo@gmail.com), I finished computer
science and electronic engineering, currently I am a PhD student at
the natural language processing lab of the Nara Advance Science and
Tecnology Institute.

I am active or sporadic contributor of several open source projects so
I am pretty used to tools (git, etc) and procedures (mailing list, bug
tracking, etc).
I have written most of my code in C++, but since one year now I have
being using Ruby for most of my own projects and prototypes, I am
using rails from some months now.
My next step in my PhD involves using Rails for the next 3 months to
create Quiz like games. I hope that both projects can create positive
synergies that let me improve the framework with a better insight.

My native language is spanish, even with some grammar errors, I think
I won't have any problem communicating with my mentor in English.
Currently I live in Japan.

Wow, great proposal Jordi! This is a very large project; do you think
one summer is enough? :slight_smile:

Best,
jeremy

I dont think so. :stuck_out_tongue:
I think the views of graphics like map, characters etc, eventually
will be a HTML5 canvas + javascript. I have no much idea of those
technologies so views will be very basic as included in this project.
This project is more about the models and controllers needed for the
data backend and general logic of the game. As such is already worthy
and difficult to get done in a GSoC. Also as it is the first time I
attempt this (even when I just started some very related work) my
timeline is a big guess work. What I can provide is a best effort
toward the goals and the timeline of the GSoC plan. Halfway the
implementation we can discover something was missing in the plan for
instance and redefine the timeline. I am not worried about that as
long as the final "product" is worthy and useful. If it is, users and
developers will appear and start contributing, then the project will
have been a success.

After talking with someone developing RPG games on SDL, I have being
advised to scale down my proposal and I have done so.
The main idea and the long time goals are the same, the timeline and
proposed steps have changed somewhat.

The proposal URL:
http://socghop.appspot.com/student_proposal/show/google/gsoc2009/jordip/t123797787035
(anyone can see this or should I copy here the text?)

The proposal URL:

> http://socghop.appspot.com/student_proposal/show/google/gsoc2009/jordip/t123797787035
> (anyone can see this or should I copy here the text?)

"You do not have the required role."

You might want to send a copy of the proposal to the mailing list or upload
it somewhere else.

Copy and Paste from the proposal page

Abstract:
Web based gaming has become an important branch of gaming with
advantages such as platform independence and accessibility from any
location. Most web games are currently single player, casual Flash
based games or multi-player HTML+Javascript based games with a PHP
backend.
Ruby on Rails, has shown that a strong framework with sensible
defaults tailored for web programming needs can improve productivity
enormously.
The aim of this project is apply the Ruby on Rails philosophy to web
game development and improve the web-games programming landscape in
the way that Rails improved the web programming landscape.
Specifically this project will create plug-ins and facilities to allow
easy creation of web games with the Ruby language. Our goal is to
create a flexible framework for multiplayer strategy and RPG games.
Content:

Why do you use Rails?

It is a framework with very sensible defaults and a strong emphasis on
REST-ful applications. This is the same philosophy that will be
applied to the web games framework.

How would you like to see it improve?

I would like to see rails as the killer framework in more contexts.
Some people may be intimidated by the MVC design philosophy that, at
first glance, seems to limited to problems that can be described in
terms of relation databases. I would like people to be able to unleash
their creativity and see rails as a totally different beast.

Why is this important to the Rails community at large?

Rails can become the de-facto standard when it comes to deploying web-
based games. As graphical capabilities of the web standards improves
(HTML5 will come with a 2D canvas, the Chronos group started the
design of web standards for 3D graphics), HTML-based gaming frameworks
will appear. With its ease of developing HTML content, Ruby on Rails
is poised to be a leading force in this field.

The aim of this project is 3-fold:

    * Successfully create a basic platform worthy of GSoC. Create
resources for web games using Ruby.