Pages

Monday, November 22, 2010

what i've been doing

I guess I'll go ahead and tell you what I was working on that was so important. Well, I had it in my head that I was going to get rich by making an Xbox Live Indie Game. I got quite a lot of work done, but ultimately I decided to scrap the project because the XBLIG service doesn't really look that profitable. There are too many junk games on it smothering the few decent ones and I don't think there's a very huge target audience anyway.
Here's a screenshot of what I had so far. As you can see, I drew my inspiration from many sources. It was a turn based strategy game somewhat influenced by XCOM with elements from games like FFT and Disgaea. The story was a ripoff of Aliens and the alien designs were inspired by Half-Life 2, Warhammer 40k, and Alien.

I made a lot of progress, but in the end I decided it wasn't worth it so I came by to my true love, roguelikes! At first I toyed around with a new game about surviving in a post-nuclear war wasteland. Before you go shouting "FALLOUTRL!?", no. I decided to explore the nuclear winter idea because I haven't seen that done often. As a result, I spent a bit of time implementing an interesting heat generation and propagation system, which you can see in this screenshot.
I also worked on a simple electricity system which turned out pretty interesting...
I learned a few things while working on this game and it gave me a few ideas. It's still something I'd like to go back and work on eventually, but in the end I can't stay away from CPRL!

The screenshot I posted yesterday was to show off my new scrolling, seamless map system. Now you'll be able to walk from one end of the world to the other with no notable map transitions!

i'm back :>

  
What's this!?

Tuesday, October 19, 2010

lack of updates

I guess I should tell you all that I'm taking a little break from CPRL. I didn't want to post anything for fear that everyone would give up on it and call it dead. I guess not posting anything isn't helping either... It's not a lack of motivation. I've just got another big non-roguelike project right now that I'm trying really hard to finish before the end of the year. As soon as that's done I'm getting back to CyberpunkRL. So once again, this game is not dead! I apologize for the further delays and hope to see you guys again once I resume work!

Friday, September 24, 2010

level generation progress, finally!

I've been putting off the level generator for a long time. Every now and then I'd pick it up, get discouraged and push it aside for awhile. But it's been constantly bothering me because if I never get it done, I'll never be able to release anything and I know that I'm a bit overdue for a release now. It's still quite a way off, but now it's one step closer as I think I've almost got something I might be satisfied with.

I started off generating a few intersecting rectangles and creating a grid based on that:


After some more splitting, I started to combine rooms. Hallways will always combine as long as they are connected on a short side. Larger rooms combine if they can form a room under a certain size. I came up with something like this:




Still not good enough, so I added some more random variation...
It was starting to look pretty good, so I added doors!

It's still not complete. I need to work on the door placement and then I need to integrate it with the actual game map, but I think I'm done with the hard part at least.


I know I haven't released anything in a very long time (that's what rewrites do, sorry), but don't give up hope. I am constantly working, and tons of other stuff has been worked on that I haven't posted about. I'm just trying to do things right this time around and school is also getting in the way.

Monday, September 13, 2010

vision modes

I just spent a little while implementing some visual effects for night vision and thermal vision. Right now they only affect coloring and sight radius, but obviously I'll need to give them some in-game advantages and disadvantages. I'm thinking the thermal will allow you to see any hidden enemies within LOS, but at a reduced distance. Conversely, nightvision will increase your sight range, while only giving a small bonus to spotting hidden enemies. Those are just my thoughts. If you have a better idea, let me hear it.

Monday, September 6, 2010

dual wielding, interface improvements

Today and yesterday I worked on adding dual weapon wielding. Now you can hold any weapon in either hand, but weapons in the left hand get penalties. Also, two-handed weapons that don't have another free hand get penalties. So you could dual wield heavy machine guns if you really wanted to, but without some crazy bionics and high skill levels, you won't really be hitting much.

In addition to that, I made some interface improvements. I gave it some color and made the message window smaller.

equipment

I told myself I'd work on map generation this weekend, but I'm still stuck on that so I decided to give it a break and work on other stuff. I started working on the equipment stuff and pretty much got it mostly done in an hour or two.
Don't worry. The item names are only temporary. If you've got any cool sounding item names, feel free to suggest them by the way. As you can see, each body part can have its own piece of equipment and an additional item, like a weapon. I will make the equipment screen ignore items that can't have actual equipment (like internal organs).

Progress in the level generation department isn't going so well. Coming up with a good, interesting building layout generator is very hard, so I may just resort to using pre-built templates. But I'll still give procedural generation a shot. It's not pretty, but here's what I've got so far.
It constructs the building from several random rectangles and then subdivides it into a number of smaller sectors. Each of those sectors will not be an individual room. Instead I'm hoping to come up with a way to combine them in an interesting manner. I'll also throw in some random divisions to break up large spaces. The final result may not be the best looking building in the world, but I think it will be better than what you've seen in previous releases.

As always, your comments and suggestions are welcome.

Tuesday, August 31, 2010

new health system details

Today, instead of doing homework/reading, I had a long talk with Whales at #rgrd who is working an awesome zombie roguelike, Cataclysm. That got me thinking about my own game, and we threw around ideas until I came up with one that I'm pretty satisfied with. I decided that not only am I sticking with the body part based system, but I am expanding it further. Previously, it consisted of a list of 6 body parts, and a lot of stuff was basically hardcoded in to work with those 6 parts. The new system instead uses a tree system. Each bodypart has the capacity to contain children bodyparts, and each bodypart has a weight for random selection. What this means is I can group together the bodyparts like this:
One of the awesome things about this system is it's a lot more flexible than the old one. I can easily add other parts, such as internal organs. It will also bring about some major gameplay changes. Armor and augmentations will now be assigned on an individual basis to each body part, meaning you can mix and match armor parts (shoulder pads, leg armor, boots, etc).  I'm also going to make left and right play a prominent role for arms. Your right arm will be your primary arm (right handedness is assumed for simplicity's sake). Your left arm will be your gear or blocking arm. This means you will be able to equip each hand separately (dual pistols, pistol/motion scanner, riot shield?). Two handed weapons will receive a big penalty if your left hand is not empty or if the weapon is held in the left hand because of a wounded right hand/arm. The left arm will also automatically attempt to block some melee attacks (either by a skill check or by an increased random weight; I haven't decided yet). This, combined with the customizable armor, should make for some interesting situations. I can see a heavily armored left arm and an unarmored right arm being a viable option for characters who plan on getting in close during combat.

Because of its tree structure, I can easily pick a random hit location given a part using recursion. Non-aimed attacks will simply go on the Body and it will choose one of its children, who will in turn choose from their children, and so on. I'll also be able to easily add targeted attacks which will give the option to aim for either the head, torso, or legs.

Each of the parts still has an individual health level and they'll still behave a lot like the parts in the old version. There are a couple key changes, however. There will now be an additional total health, which will reflect the sum of damage to all body parts. For instance, if your total health is 80 and your limbs are each 20, then having all 4 limbs severed would kill you. The trade-off, is that I'm ditching the bleeding out. It will be replaced with Pain, which will be increased when damage is taken and decrease over time or by using drugs. Pain will have a few negative effects, such as a negative modifier to speed.

Sorry for the long post!

Saturday, August 21, 2010

improved projectile system

Today I worked on rewriting targeting and shooting. It's not completely done, but I ended up with what I feel is a greatly improved system.
This is a picture of the new target selection. It looks the same as the old one, except with a line of asterisks. Why the asterisks? In the new system, bullets don't magically teleport exactly where you're aiming. The follow a trajectory. This trajectory isn't realistically modeled or anything, but it does mean that bullets have a path that they follow to a target and beyond if they miss. Anything along that path has a chance of being hit, although the targeted tile gets a bonus. This opens the door to new combat possibilities. You'll be able to take cover behind furniture or in a group of people. You'll also need to watch your shots more carefully and firing into a group of enemies will increase your chances of hitting one. The final addition is that I've added a primitive animation when you shoot that shows the bullet traveling and then its impact location.
As you can see the NPCs still stand there in the same exact place. I really need to start fleshing out my Actor classes, but I'm having a little trouble deciding what I want to do about certain gameplay elements. The most important one that I'm not sure about is the health system. I really liked the locational damage from the old version, but I feel like it had a tendency to be a little too random, resulting in too many random unlucky deaths. I'm stuck trying to figure out a good system to use that still allows me to have lots of gore and injuries requiring bionics to fix while not being frustrating. If you've got any ideas, please feel free to post them!

Monday, August 16, 2010

deja vu

It feels like I've done this all before...

Oh wait, I have! Work continues on reimplementing all the basic features. Today I added field of view, map items, music, lighting, and key configurations. The music is new; I'm using FMOD. There is a noticeable load time and the game for some reason uses 90mb more memory now, but I'll look into that at a later date.

NPCs still sit around doing nothing.
CyberpunkRL: Now with mohawks!

Sunday, August 15, 2010

productive day

Today I did a lot of work on the Map class. I also laid down the foundations for my Actor classes and map entities. In addition, I played around with some graphics, and I think I'm going to keep them. Most of the graphics can be remapped in the configuration files, so it will still be possible to play a text-only version of the game with a little work.

obviously a work in progress

gzip!

I spent a couple of hours today implementing the basics of map saving/loading. It was clear from the beginning that I would have to come up with a better system for saving map data. Even though each tile in the map array just needed a byte, in order to save them I needed to use 2-4 bytes. Simply saving each byte as the corresponding character in the text file was out of the question, because a lot of those characters were special ones that screwed up the file, so I had to save them as 1-3 digit numbers separated by semicolons. (e.g. 128:24:1:35) As you can see, that takes up a lot of extra space, and resulted in 63x38 maps taking up over 9 kb for their arrays alone.

After several frustrating hours today, I managed to implement a system that compresses the raw map arrays using gzip. Then it takes that data and applies 64 bit encoding so that it won't mess up the save file or require a lot of extra space. As a result, the compressed map data will still fit nicely in the text-based save files, but editing actual map layout data will be near impossible (not that it was very easy to do in the old version anyway).

Was this extra work worth it? Well, I'm able to store the arrays for a 120x80 sized map in around 2 kb now as opposed to the 9 kb it took before (for smaller maps too)! When you have thousands of potential map files, that really makes a difference.

Let me know if I'm posting too much boring stuff...

Saturday, August 14, 2010

New item system

Still apprehensive about jumping straight into all the complicated stuff of writing a new engine, I decided to start off with the item system. Basically, the item system now consists of two classes so far. There's the Item class which will be used to point to specific instances of an item (such as in a player's inventory) and will be able to contain instance specific data, such as quality, quantity, etc. The item class contains a pointer to a unique instance of ItemTemplate, which defines the actual item information of a given item type. So while there may be multiple instances of a PX45 Pistol, they'll all still get their base stats from the same ItemTemplate. This new system is different from the old one in that I'll now be able to add in various modifiers to specific items, which was impossible before.

In addition, I've made the ItemTemplates get all their data from a text file, which means anyone will be able to modify the game's items. The data file currently looks like this:

//TEMPLATES
//defines base characteristics for all items
item:base_template
{
    char:249
    cost:10
    description:"No description"
}
//defines gun characteristics
item:gun_template
{
    use:base_template
    char:191
    gun
    fireRate:1
}

//GUNS
item:light_pistol
{
    use:gun_template
    name:"PX45 Pistol"
    ammo:".45 ACP"
    damage:5
    magazine:10
}

It's pretty readable and offers a fair bit of flexibility. I think I like it.

-_-

Well I took a bit of a break from CyberpunkRL. Sorry for disappearing for so long. I do have some news.

I've decided to rewrite the game from the ground up. What this means is that the game will be changing quite a bit. The basic premise will remain the same, but I've decided to go with larger, more enclosed map areas. NPCs will still be confined to maps, but each map will contain more buildings and should feel much more interesting.

I've also been throwing around the idea of adding some graphical characters to the font, and I'll post some screenshots once I've tried that out.

Other changes will come as well, so we'll just have to wait and see what happens! Thanks for your interest and patience.

Wednesday, July 21, 2010

Still working

Sorry for not posting in a while. I thought I'd post something to let you guys know I'm not dead and that CyberpunkRL is still being worked on. Unfortunately the past few days have not been very productive due to a sudden Bad Company 2 addiction. Don't worry; I'm aiming to get 0.2a out within a week. That's not a hard deadline or anything, but hopefully I can stick to it. What more do I have to do to get 0.2a ready? The truth is I've already gone through my list of things I wanted to do for the next release. The problem is there are a lot of rough edges I'd like to smooth out before I release another version. I've added so much stuff that there are a lot of things that aren't fully integrated or completed yet (a lot hacking stuff for instance).

I'm happy to announce the next version does have saving! It uses the rather unforgiving model of only one save allowed and it is deleted when you die.The files are in plain text format and can be edited, if you're a dirty cheater.

I've also listened to a lot of the suggestion you guys have given in the comments and stuff. Thanks for all the support!

Wednesday, July 14, 2010

Victory

Spent the day battling a damn memory leak caused by not disposing certain objects. In the end it turned out to be several stupid mistakes on my part that caused it, but I had to spend 8 hours mucking about in memory profilers and rewriting large sections of my map management code. I guess it wasn't a complete waste, since I learned some new skills and became pretty familiar with managed and unmanaged memory. Oh, and cleaner code. I could have had saving and loading finished if this hadn't popped up! There's always tomorrow though. I leave you with but a small glimpse into the agony I suffered today.

New font

Thanks to Nolithius from #rgrd, CyberpunkRL now has a much more readable font. It's just a larger version of the old one, but I no longer have to strain my eyes to look at it. If, for some reason, you were attached to the old font you'll still be able to use it by editing a newly added configuration file. Yesterday I did a lot of work on the AI. They have real pathfinding now, so they can chase you very well. They can also call for help, and cops will investigate gunshots and screams.
Here's the latest screenshot, which also contains a hint about what I'm working on today.

Monday, July 12, 2010

I've been hard at work...

I had a list of things to work on for the next release:
But I haven't finished everything on it yet. Instead I've been doing other miscellaneous, but exciting work on the game. I've rewritten even more core systems, particularly items and a powerful new scheduler. I've also done more work on visuals and the interface. Many of the changes I've made in the past few days are not very visible when playing the game, but they will make my life so much easier in the future. I've also started working to improve the map generators, particularly the city map which is now based on an island generated using cellular automata and contains several distinct area types (slum, industrial, residential).
I'll probably put off releasing 0.1.2a for a while longer so I can add more things, but I'm really excited about the future of CyberpunkRL.

Saturday, July 10, 2010

A little update...

In my last post I said I'd post an update about the hacking system "tomorrow", but it's been a little longer than that, sorry. Anyway, I got a little caught up doing other behind the scenes improvements. The field of view calculation is SO much better now and some of the other code has been cleaned up a little. I just started on the hacking interface tonight. I decided to go for a really old school terminal thing:
Every time a skill check is taken, you're prompted to press any key and then you get sent back to the map. I did this so that I can simulate time passage while you're in a console (because it would be unfair if time passed but you didn't see what was going on). When the authorities are notified it just increases your bounty, but I may add alarms and other counter measures eventually, once I implement real pathfinding.

Anyway, progress is going well. I'm going to try to release a new version packed with new stuff within a week or two... hopefully.

Wednesday, July 7, 2010

More graphical changes

I don't really have much to show you this time, but I figured I'd post a quick progress report. I've been hard at work since the last update. A lot of the work I've been doing has been behind the scenes. I completely rewrote a few methods and systems, particularly the items system. Most of those changes are behind-the-scenes and are barely noticeable in-game. I also decided to go with a solid color for floors so I can draw it behind objects and actors.
I did some work on the stealth system, added a somewhat useless augmentation, added a character info screen, made light placement not random, made targeting less annoying, added neon signs, and fixed a few other things. All the changes are pretty minor, however, so I plan to not release until I add a major new feature--hacking. I'll post about hacking once I've done some work on it (hopefully tomorrow). Also, I've decided hacking will be done through a command line thing. Sorry to disappoint those of you who were hoping for some kind of virtual world hacking interface. I'm just not a huge fan of that.

Sunday, July 4, 2010

0.1.1a Released - should work on 64bit now

Well I was going to add more to this version, but I decided to release it early. I believe I've fixed the 64 bit OS compatibility issues. Let me know if it's not fixed.
Download CyberpunkRL 0.1.1a

Changelog:
VERSION 0.1.1a
- Possibly fixed 64bit crash by forcing target platform to be x86
- Added stealth. Press 'z' to toggle stealth mode. Stick to the shadows
- Light sources are now visible on the map (star-like icons). They can also be broken when shot
- Buildings are now colored
- Minor item stat tweaks
- Reduced base sight range slightly
- Keypad keys should work in all menus now

Saturday, July 3, 2010

0.1a Release

Alright, I'm releasing 0.1a to the public. It's missing a lot of features but I think it still should provide some enjoyment. Give it a shot. Feel free to comment here with feedback. I didn't make an installer, so just extract everything somewhere and run cyberpunkrl.exe. If you have problems make sure you've got the .NET framework installed (CyberRL is windows only for now).
I'm trying Filesmelt for hosting for now, but if it goes down or doesn't work out, I'll try somewhere else.

Download CyberpunkRL 0.1a!

I included a manual. It may not cover everything, so the best way to learn to play is to just experiment. Expect to do a bit of dying while you get used to the game.

64bit Compatibility
It has come to my attention that CyberpunkRL crashes on 64bit OSes. I'm working on fixing that crash and it will hopefully be fixed in the next version, which should be coming fairly soon. I'm sorry for the inconvenience! 
Update: I think I've fixed the 64bit incompatibility by setting the target platform to x86 rather than anycpu. I tested on my 64bit laptop and it worked. I'll release a new version, 0.1.1a, within a few days.

Name change, release imminent

I've decided to change the name of this game to CyberpunkRL from CyberRL because I stumbled upon another roguelike called Cyber Rogue and I want to avoid confusion. It's a shame; CyberRL was more catchy. Oh well! I'm nearly ready to release 0.1a either today or tomorrow. I just need to put in some finishing touches and find a file host.

Friday, July 2, 2010

Appearance changes and first release approaches

I decided try out some different characters for rendering the map. I chose the lowest level of filled block for the floors and the solid one for walls. I like that the floors now show lighting more clearly (which will help when stealth is implemented) however I dislike that objects on the floor have different backgrounds. I tried to offset this by rendering a solid color gray background behind them, but that just made things hard to see so I'm sticking with black backgrounds for now. I may end up switching the floors back to periods if I feel like it's too ugly, but I'm definitely keeping the walls.
In other news, I spent the last few hours hard at work. I feel like I'm almost ready to release a public alpha version (0.1a I guess I'll call it). I checked off everything on my todo list for 0.1a except for in-menu item descriptions which I'll probably add in tomorrow. I also have a few other minor tweaks and features that I'd like to add, and I need to write up a quick manual and find a place to host the file.

Edit: If anyone is actually reading this and has an opinion on the new map graphics, I'd love to hear it.

Wednesday, June 30, 2010

Lighting and a description of current features

Today I added lighting. Currently it is only graphical, but I think I may add a stealth element to the game and lighting percentage of a tile will be the chance of success for spotting hidden actors (modified by perception skill or augmentations). If I do add stealth elements, I'll probably add destroyable lights.














There's a screenshot. It's kind of hard to show off the system in action because it requires you to move around to get a feel for, due to the limited line of sight.

I've decided that I'll release an alpha version (v0.1 or something) once I make a few changes:
  • A little more polish for the interface and menus
  • Augmentation and supply vending machines
  • Some minor bug fixes and rewrites of certain systems
This shouldn't take more than a few days, but I'll need to find a file host for it. Also it won't have saving yet. However I plan to eventually add saving once there's enough content to actually play in more than one sitting.

For those who are curious, here are some of the already implemented features:
  • A small city of 2400 randomly generated screen-sized maps. They are stored in memory so when you leave a map and come back, it will be the same as you left it (but they don't update when you're off-screen).
  • Various different NPCs separated into factions (Civilian, Police, Lunatics, Addicts, Thugs). Some are hostile by default. Some are hostile only after being attacked. Police go after you if you have a wanted level. NPCs can fight each other. Doctors have healing and augmentation services.
  • Blood and severing of body parts (bionic replacement limbs will be added eventually).
  • Dynamic health based on location and blood loss.
  • ---> Explosive, movable barrels!!! <---
  • Destructible walls, although no weapons in the game can currently destroy walls

First Post!

CyberRL
CyberRL is a personal project I started to practice my programming and game design skills. It is influenced mainly by Deus Ex, Ghost In The Shell, and my own imagination. Cyberpunk is an exciting genre because it represents a very plausible near future society. It makes me sad to see it so underrepresented.

I'm not certain how exactly the game will play out yet, but I'm planning to have it be set in a large city where you basically go around and pick fights. You can expect lots of human augmentation, hacking, excessive violence, and buckets of blood.

About Me

I'm a sophomore computer science student at the University of Texas and I'm looking to get into the game industry someday as a programmer, level designer, or game designer. If you're hiring in the area, let me know! :]

This Blog
 What should you expect from this blog? Well I'll be posting somewhat irregular updates of my progress, and I'll be sure to include screenshots in nearly ever post. At the moment it is missing a few key features required to be released in any form, but I may start releasing in-progress versions (alphas/betas/whatever you want to call them) in the near future.

For now, here is a screenshot of the current version of the game showcasing the very primitive state of the level generator, the WIP interface, and the gory aftermath of a multi-sided fight. A police officer engaged a group of thugs while a drug addict killed a civilian. I came in and finished off the survivors, except for the doctor who healed me and installed my sub-dermal tissue repair augmentation. Now I'm a wanted man; better avoid cops for a bit.