Visit Our Project Home Page

AI Integration

March 18th, 2009 by stephen

I’ve begun the process of reintegrating our awesome AI features into the rewrite.  It’s going well!  The ai stuff was failry abstract to begin with, so it’s not particularly difficult.  There are just a lot of methods to implement in the context of our new Request-based architecture.  I had forgotten how much power our in-game scripting language has.

Computer Vision

March 18th, 2009 by stephen

Just as an experiment, I added some computer vision to our game.  Using just a webcam, you can control where you move in the game just by moving colored objects in the real world (i.e. a pen cap, a marked finger, etc.)  It works surprisingly well!  We need to put videos on YouTube!

Synchronization and future directions

February 1st, 2009 by stephen

MoveRequests are being synchronized (according to the tests.)  But we use MoveWithMouseRequests to drag objects.  These should probably be translated into MoveRequests before reaching BodyManager.  Should we make a RelationalMoverModule???

Also, I haven’t yet tested anything by running the game.  But I made a SimpleServer, which is like ModularSimpleGame, except that it just has a BodyManager and the server modules.  In a perfect world, we can run SimpleServer then run ModularSimpleGame and see the AI-Brain-Possessed rock climbing the mountain on both  the server and the client.  But I am skeptical that this will actually work.  Will the AIModule get angry that the rock isn’t being created fast enough?  Will there be other, unforseeable problems?  These things are impossible to know until the Wikipedia community gets off its ass and writes a series of articles about ModularSimpleGame.

–Stephen

P.S. Would this be cool?  First, we make a module with a Will.  This module opens a socket to which we can connect remotely with a simple console/shell program.  The module takes incoming strings, translates them into NewRequests, and broadcasts to the connected modules.  Thus, we would be able to connect to our game with a text-based user interface and mess with a running game in realtime without ever having to run the game…

Also, we could then attach a guiModule to the ConsoleModule and make an in-game console.

Reports of Our Death

January 31st, 2009 by stephen

In spite of the lack of recent activity on this blog, it is important to note that RedPanda is alive and well.  We are currently in the middle of a full rewrite, which will make the game much easier for the open source community to work on.

The rewrite is going VERY smoothly, more smoothly than I could ever have hoped.  In just a few months, we have almost recreated all features from version 1.0.  After finishing up the synchronization of game entities, all that’s left is to rewrite the artificial intelligence feature set.

We’re hoping for an official release at the end of Februrary!

Changes

May 25th, 2008 by tommy

I worked for a long time today trying to get the database to be able to be on a computer other than redpanda, and partially succeeded.

The conversations.Database class now keeps track of a serverAddress string that indicates, as expected, the location of the server. This is set by a static Database.setServerAddress(String) method that gets called about as soon as you start the client or server, in the FrontClient and NetworkBetterServer constructors. (Although I don’t think the server ever actually uses it - explained later.)

We have mysterious duplicate methods in the Database class, which take an extra unused parameter (boolean onServer) to distinguish between them. I’m guessing this from when we were having weird problems where we couldn’t access the database when we were running a client on redpanda itself. Currently, the methods without the ‘onserver’ parameter use the following url:

"jdbc:mysql://"+serverAddress+":3306/game_dev?user=game_client&password=###"

while the server methods access:

"jdbc:mysql://localhost/game_dev?user=game_client&password=###"

(Previously, the server methods had used the root user to connect to the database.)

I played around with mysql and discovered a few things:

  • using the command GRANT ALL ON db.* TO 'user'; is a synonym for ‘user’@'%’ where % is a wildcard.
  • for some reason, granting permissions to ‘user’@'%’ doesn’t give them permissions for accessing the database locally
  • isntead, you should grant permissions to ‘user’@'localhost’
  • and you can grant permissions to “multiple” users with the same username but different hosts

So, I ran the following commands on the mysql server on my own computer:

GRANT ALL ON game_dev.* TO 'game_client' IDENTIFIED BY '###';
GRANT ALL ON game_dev.* TO 'game_client'@'localhost' IDENTIFIED BY '###';

After doing this, I was able to spawn, pickup, etc, items in the game, when running both client and server on my own computer. However, now when I try to connect to a server running on redpanda, an exception is thrown on the server side when creating an item because the database is not accessible. I ran both of those commands on redpanda also, and checking the user table in the mysql database indicates that game_client has access from the right hosts. (Try using the mysql database and running SELECT User,Host FROM user)

I looked at the user table on redpanda before doing the hosts thing, and it didn’t look like the hosts were correct, so I’m assuming that may have been our problem before….? Anyway, I’ll probably look at it some more tomorrow. :-/

Also, I updated the game/schema/schema.sql to reflect the change we’d made to the database for keeping track of item sizes when picked up, and also put those GRANT commands at the bottom of it, so if you are wanting to set up the database on another computer, it should be sufficient to run:

mysql -u root -p < schema.sql
mysql -u root -p game_dev < test.sql

But don’t quote me on that.  :P

Java Web Start

May 3rd, 2008 by tommy

So I’ve been thinking that it would be really cool if we could get our game (or even just a demo) to run from our website with Java Web Start.

I wrote a webstart test, that you can run from the server by clicking this link:

/jws/test.jnlp

I jar’d the game and added the necessary webstart stuff, but I wasn’t in the math lounge so I couldn’t actually connect. We need to see if we can get IT to forward the necessary ports to run our game from off campus. (Also, I wonder if that’s related to the problem I posted about previously?) You can try running the game through webstart with the following link, but it takes a few minutes to download the jar file and then all you actually get to see it the login box, but if you want to check it out, go ahead.

/jws/game.jnlp

I found another 3D MMORPG that runs via Java Web Start - Wurm Online. I checked it out, and it’s kind of neat. I didn’t play it for very long, but I think it’s cool that it uses JWS, and it looks relatively mature. If you’re planning on giving it a go, you need to register for an account on the site first. And it takes a while to download the first time.

Maya animations exporting problem

May 3rd, 2008 by whitney

Update:

I tried to see if we could download the Doom 3 engine to export .md5 to there then to JME, but it seems that it’s only guaranteed to work if you have Maya versions 4, 5, or 6, and we have version 9.0.

Also, a ColladaMaya plugin is needed to export to .dae files compatible with JME…but yet again there are only downloads that work with Maya versions up to 8.5.

So basically, our Maya is too NEW. Problem still not solved. :(

Unknown error….

May 1st, 2008 by tommy

I’m in the Cove, and can secure shell directly into redpanda, so I assumed I’d be able to run the game from here, but when I tried I got this error, before anything in the game actually loaded:

java.lang.NoSuchMethodError: method sun.misc.Service.providers with signature (Ljava.lang.Class;)Ljava.ut
il.Iterator; was not found.
at com.jme.system.DisplaySystem.getSystemProviderMap(Unknown Source)
at com.jme.system.DisplaySystem.getCachedSystemProvider(Unknown Source)
at com.jme.system.DisplaySystem.getDisplaySystem(Unknown Source)
at game.BetterGame.initSystem(BetterGame.java:116)
at com.jme.app.BaseGame.start(Unknown Source)
at game.NetworkBetterGame.notAMainMethod(NetworkBetterGame.java:104)
at game.FrontClient$2.run(FrontClient.java:87)

Has anyone encountered this before? I don’t even know what it means.

Bio pictures are up!

April 29th, 2008 by whitney

Hey everyone, check out the beautiful pictures Claire took! They all can be seen on the ‘Who is RedPanda’ page of the website.

P.S. - For the people who have not written your bios yet: write your bios.

inventory item resize problem..solved!

April 27th, 2008 by matt

Previously when re-sized Items were picked up and placed in the inventory the size was not saved. When the same Item was placed back into the world from the inventory it would create a new Item with the same name but with the original size. We were able to keep the re-sized dimensions and place them into the mysql database and when the Item was placed back into the world it takes the information from mysql and apply them to the Item.