Tuesday, November 3, 2009

kosmonaut

Unity is pretty damn sweet. I threw this thing together during lunch.

http://nil.cjb.net/unity/kosmonaut.html

Not much, but surprisingly easy to put together.

Sunday, November 1, 2009

PORJECT FOOLONG

Yay, stuff in Unity is beginning to make sense. The Object/Component system really makes sense and encourages you to try to modularize everything yourself. If you modify anything in an external editor (code, art, etc.), the changes show up almost immediately. If you add non-private variables to a script you are writing and then use it as a component in an object, they automatically show up as variables you can modify on object instances in the editor. Except for some significant interface hurdles that stem from its Mac-only past, it's turning out to be a great platform.

This is what I made so far : PORJECT FOOLONG

Planning to add mouse control, weapons, etc. to the point where it's as far along as Project Oolong was.

Wednesday, October 28, 2009

Unity now free

Unity (formerly Unity Indie) is now free. Guess what I'm going to start doing instead of fiddling in Java and Python? Exactly.

Wednesday, September 30, 2009

Python to Java

Beware, this kind of degenerates into rambling...

I'm learning Java because I got fed up with Python's idiotic garbage collection and my failed attempts to work around it. I liked the idea of using a language with a VM that can run in a browser, and for some reason didn't feel like going the Flash route.

There are some big annoyances which I kind of expected because Java seems to be pretty well hated on the Internet. It doesn't like it when I try to inject little bits of duck typing into its strongly typed system, and its exception handling, well, it reminds me of the first thing that happens when a C programmer sits down with Python or a dynamically typed language for the first time. It doesn't understand that it's okay to have errors at runtime, that a compile-time safety net usually gets in the way more than it helps, and that the programmer should only need to catch exceptions if they want to. The Eclipse auto-solution-finder-thing even lets you put in try/catch blocks that are just two shakes away from how Python does it anyways; print a stack trace and hope it wasn't a fatal error. Go ahead, clog up my code with a boilerplate solution.

Java seems to only give me two options; break out a big, ugly try/catch block when I don't really want to write handling logic anyways, or eternally pass the buck (and force me to import obscure packages) with the "throws" directive. Is there any way of telling Java "if this code throws an exception just crap out, it's okay" without having to type out a ton of syntax?

Java is also too stupid to cast from a Double to a Float (which are proper java Objects, not to be confused with the simple double and float types), and the lack of duck typing is forcing me to write a silly converter function from JSON objects to HashMaps. I can understand this latter case, a JSON object and a HashMap might allocate memory differently even though they share the same get/put interface, but the former case is just silly.

Look at this crap I wrote in my converter:

try {
Object value = json.get(key);
if (value instanceof Number) value = Float.valueOf(value.toString());
hash.put(key, value);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

I'm just brutally forcing anything that looks like a number in my JSON data to become a float, and since value is an Object I can't cast directly to Float, no, I've got to do stupid shit like this. I'm lucky I am only doing this conversion at init time since I don't expect to load JSON data on-the-fly.

For all this bitching I do it's still interesting to work with another language, and the half-assed attempts at duck typing (the Object type) lets me do hand-waving where in C++ I would need to play type nanny. I definitely like it more than C++, it feels like it's actually been engineered to some degree instead of thrown together, even if it's at times over-engineered or the most obvious, it's-right-80%-of-the-time solution is thrown out for the super-perfect-right-100%-of-the-time solution. It's also a really fast language (compared to Python) and the garbage collection actually does the job.

In Python, it's so painfully easy to make tons of references to an object, many of them circular. I wrote a "smite" method for the vaquum game that programmatically tries to remove circular references. It only partially works, I put a debug message in the __del__ method of an object and it doesn't seem to trigger. I will experiment with a more complex method using the gc module, where I try to make sense of the gc.get_referrers() output and delete every last freaking reference to a given object. If it actually works I'll be doing the Python community a favor, everything I can find online about fixing circular references are way too simple and don't give you an idea of A) how to remove these references from a big piece of existing code and B) how to avoid making these references in the first place without compromising the power of your code. My original method was to immediately make a weakproxy of an object and only allow the rest of the game to see this weakproxy. The original reference is tucked away in some manually-managed list in the master Model object. This worked decently well for Hard Aether, but it's not working for Vaquum. I think it's because my __init__ methods for objects are making too many references to other objects and I'm going to need to export all of that out into a manually-called 'init' function which I call from the weakproxy after its creation.

It is kind of dumb when the easiest method to manage your objects uses an stdlib module. I don't expect much from a language that, before version 2.5, would never free memory back to the OS. I realized while making Hard Aether that Guido really did use Python at first as a super scripting language, it's only in the past few years that anyone has thought of using the language for programs that constantly create hundreds of objects and need to run for as long as the user wants it to.

Wednesday, September 9, 2009

drone game





Found some time to convert the space game into a more fighter-centric experience. Still buggy, but I'm keeping stuff simple enough that I might actually be able to finish this.

Friday, August 14, 2009

meh

Casual lander game could not be completed in time! Oh weh mir!

Got an idea for turning vaquum into a multiplayer co-op kind of game where you've got to defeat stations that spawn hordes of relatively flimsy robotic ships of some kind...

Friday, August 7, 2009

Casual Lander Game



I decided to use Construct again. It's pretty neat when you can just /do/ stuff and not spend 30 minutes - 2 hours debugging every little thing you add. The time constraint on this project is short enough that I can't use the macho excuse that Construct is for wussies because of the lack of programming.

Tuesday, July 28, 2009

vaquum, working title for a game

Getting confused about what to do now about this game...



The ships here are a cruiser (red) and battleship (purple). Either one is controlled with WASD and the mouse. The turrets on the ship aim towards the mouse pointer, whereas WASD is used to turn the ship or thrust it forward. Guided missiles can be shot out of the front of the ship, which also follow the mouse pointer and thus have to be manually aimed by the player. In "playtests" (i.e. just screwing around) it seems like this combat system might be decently fun.

Now I just need to know what kind of game I build around it. I have qualms about making a traditional Elitelike, because the way the ships are, there are significant differences in armament, cost, and quality between a frigate and a battleship. A frigate might have two turrets, while a battleship would have six turrets, and the battleship would have either x2 or x3 the hitpoints as well as slightly thicker armor. The way I have designed the ships currently, and the way I figure they would be played, really rewards using them in a group setting which is not what an Elitelike is. I have big ideas to make a sort of multiplayer Elitelike MMO but these are not feasible for the time being, I need to apply this combat system to a simple game where it will fit well.

The way the damage is calculated... total_damage = (ship_armor - weapon_penetration) * base_weapon_damage, where (ship_armor - weapon_penetration) is always > 0 ... means that armor-piercing weapons will do equal damage to both thick and thin armor, so the extra hitpoints on a battleship are in effect "worth" less if the battleship is attacked with armor-piercing weapons. Hopefully this two-dimensional damage system is flexible enough to be a key part of ship balance.

Anyways, I really only have two ideas for a game from here.

The first would be a fleet-battle kind of game with a turn-based strategy overgame, like in Star Control 1. The player would build and move fleets of ships around in a turn-based environment, creating outposts and such, seeking out and trying to destroy the enemy starbase. When two opposing fleets meet, they would go into a real-time combat scenario which uses the combat system I've made and some simple RTS commands to let the player command their allies.



I could either do a node-based map like Star Control 1, or a tile-based one like many other strategy games.



The second is even simpler; it would take a page from Cortex Command and simply be a "playground", hopefully with multiplayer. Players could warp in ships and just fly around shooting each other, perhaps with the ability to mine asteroids floating around. It would all occur on one map, which could be as large as a star system, or perhaps only a small section of an asteroid belt (the dust clouds and asteroids could lead to some more interesting play). The resource levels could be set such that it would be more of a competitive team game than just a playground. If I were to go this route I would probably want to make a ship designer which is embedded as part of the game so that you could design new ships during battle, or more likely, visit a "playground" server where you just sit around and design ships and chat with others with no resource restrictions and only consensual combat.

I guess for now I should move forward with the second idea in mind, simply because it's focused completely on combat and has requirements that are also shared with a lot of other ideas. It's also about time I used my conceptual knowledge of networking to actually make the game multiplayer.

I am contemplating making a Descent-like 2D game with this engine in the future by including a big static map with things to collide into. I actually have a story and such brewing in my head, so making it would be my first foray into a narrative sort of game. I usually avoid these because I think games are kind of a bad medium for storytelling, they are better for creating stories via gameplay and other "emergent" processes. This might make me want to port to Novashell, since that engine provides a good deal of functionality that I don't feel like making and debugging myself. The negative result of that is that I don't spend time improving Assam...

Friday, June 19, 2009

ATTACK OF THE ASCII DONGS IV

I made a pretty dumb game:



Download here
TIGS Thread

But it's a game!

Made it in a little over an hour using Construct. I plan to maybe tweak one or two things but otherwise it's one of those "I did it just for the lulz" projects.

I'm currently working on cooler stuff, but none of it is quite ready yet.

Wednesday, May 27, 2009

git off mah lawn

I only managed to create one track for the pyweek game I helped out with, but I liked the way it turned out quite a bit:
http://nil.cjb.net/music/ants_on_my_lawn.ogg

Otherwise, I've been working on a series of SUPER SEKRIT projects. I hope to see results within a week or two, but no promises.

Monday, April 27, 2009

Shoumei DevLog



I've been working a little more on this, but have mainly just been exploring how to do some basic stuff with OGRE and exploring the formerly-unexplored world of terrain.

You can see a much more lively devlog here.

Sunday, April 12, 2009

Operation: Shoumei



As you can see, I need to get around to coding and quit with the modelling, or alternatively, make more distinctive planes.

Monday, April 6, 2009

possible future project



Operation: Shoumei

Hard Aether



Finished!

Here's the thread, you can download it there.

Friday, March 27, 2009

progress 2: electric boogaloo

Looks like I might be able to get Hard Aether done on time after all...



Saturday, March 21, 2009

progress

Hard Aether probably won't be done in time for the compo. On the plus side, I am getting a more and more developed space sim engine for use with other games.

I played Graviar recently and feel like it might be cool to remake. I made these mockups:




I'll probably try my hand at making a very minimal, small-scale version of this idea.

Saturday, March 14, 2009

Current Projects

I am currently working on Hard Aether for the TIGSource Cockpit Compo


I am playing OMF: 2097


And I have half a mind to create a deconstructionist fighting game (just hitboxes and lifebars, no other graphics), or make a simple 4X game with an emphasis on macro- instead of micro-management based off of this mockup:

Sunday, January 25, 2009

Pyweek entries

I figured it would be a good idea to post my entries in the biannual Pyweek competition, even though they are not very impressive.

Scions of Darkness was a team entry with some guys who happened to be looking for a musician to add to the team. I felt like trying out my production skills again and made what I think is some passable fantasy-themed music. I also did a little bit of work on the GUI, just simple stuff like generating the images with GIMP and laying it out. The game is really strange, I think the only reason why the art assets are so weird (a snake-thing with wheels?!? Some blue pyramid dude?!?) was because the team wanted to shoehorn the idea they had thought of (RTSish game) into the theme ("twisted").

Robo Wars is a better game which is intended to be sort of a Dice Wars / Risk clone. I only did the music on this one, and because it was techno I think I did a much better job.

CRUSH ALL HUMAN was a solo attempt on my part to create a simple game where you go around a cityscape and... crush human. I feel like I could have really actually made a decent game given two weeks, and I'm really disappointed and a little embarrassed of it in its current state. I think it did help me to just learn more programming stuff, and to learn Panda3D better, though regrettably I don't really use Panda3D anymore. This is in the game category as Yarr Wars: if I went back to the idea and re-did it using what I know now (and more time to do it), I think I could make a pretty cool game.

Friday, January 23, 2009

music @ thesixtyone.com

I figured I might as well post all my creative pursuits in one place. Once upon a time, I produced techno. I made all sorts of stuff, but the only stuff I felt satisfied with were some downtempo and breaks tracks. I have had them sitting around on http://nil.cjb.net/music/ and InternetDJ for awhile now, but for streaming pleasure you can listen to it at TheSixtyOne.

If anyone actually reads this, please feel free to comment on it, and give any criticism or advice, either from a listener or producer's perspective.