4 December 2008
Here's a quick update before I go away for the weekend:
Added new flag CHARACTER_GUARD to mobs in order to have security guards protect certain areas in the game. For example, the club bouncers in Red Light District
will now react to any ongoing fights within their specified range and randomly attack any character involved in the fight (both players and mobs).
Added experience loss as a penalty to dying. Players now lose 25% of their current experience level when they die.
While dual-wielding, if the player unequipps the main-hand weapon, the off-hand weapon will move to the main-hand.
Previously the client would only download map data for the current room the player is in. Now it also downloads all surrounding rooms, to handle displaying
exits and blocked exits better.
IMPLANTS! They function just like normal equipment, except they won't lose durability and they will stay in the body even if the player dies. However, implants
need to be installed by a neurosurgeon for a pretty heavy cost (at the moment $100 * item level). The slots available for implants are: BRAIN, EYES, SPINE, HEART,
ARMS and LEGS.
Affects are now saved to the player file and loaded back on reconnect. Previously, a player could just reconnect to the server to get rid of radiation or
any other negative affects.
Completed missions are now shown in the mission log under a "completed"-tab.
Also added mission time as a fun detail. After a player has finished a mission, he can now see in his mission log how long it took.
I received complaints about windows looking pretty lame, and even though I've thought the same for quite some time I just never took time to improve
them until now. Previously, windows were done by just leaving an area in a tile transparent, and putting some // white pixels in the corners to make them look
like they're reflecting light. This looked like... well, shit, to be honest. So I came up with the idea of placing a window texture over the transparent
area in the tile, with the opacity set to 50%. This is done in real-time by the client, and the result looks awesome! Here are two screenshots to illustrate
what I'm talking about. To the left is the new method with blended window textures, and to the right is how windows used to look.
Items dropped by characters now spread out more around the character, instead of just creating a big pile in the center, like earlier. This makes identifying
and picking up items from the ground a lot easier.
Rewrote the "skill learn chance" calculation. Skill learn chance is the chance (in percentage) a player has to increase the level of a skill while using it.
Previously, the INTELLIGENCE attribute controlled this, but I changed it to a static method instead, inspired by World of Warcraft. The skill level will increase
much faster while the level is still pretty low, but once it gets higher it will also increase more slowly. Here's how it works: say you're fighting with a
submachine gun and your skill with SMALL FIREARMS is 25%. The max skill level is 85%. At this point, you have an 85 - 25 = 60% chance of increasing your skill
upon usage. When at 50% skill level, you'll have 85 - 50 = 35% chance of increasing. So at 84% skill level you'll have only 1% chance of increasing it, which
means those final levels will take a lot of effort and patience to gain.
Objects decaying on the ground now display a small flash animation along with a sound effect.
Rain now starts and stops, instead of it raining all the time. This is controlled by the server.
As I was improving on the rain, I also went back to my unfinished "world time" code to see if I could get daylight working, as I have intended. This required
me to rewrite my entire lighting-code as I discovered it contained some pretty serious errors. For example, some polygon normals were inverted and have been for
over a year without me even knowing it. Jay, if you're reading this, I think this may be why everything looked so dark on your screen. But now it finally
works and it looks pretty good too! Check the following screenshots...
This is how it looks when there's morning in the game. A slightly red tone is added to the scene to give the impression of sunrise, and all outdoor lightmaps
turn off automatically.
As noon comes, the scene lights up even more. The red tone is gone and the scene is now as bright as it will get. Ah, what a beautiful day!
Evening approaches and a blue-ish tone is added to the scene to give the impression of the sun setting. Outdoor lightsmaps are still turned off, because we
don't want street lamps and such to come on just yet.
And finally, it's midnight again. The scene gets much darker and outdoor lightmaps are turned back on, because now we need them to light up the scene. This
screenshot wasn't a very impressing example, but it's during midnight the game gets really moody and comes alive at the most.
Have a nice weekend everybody!
27 November 2008
I feel things are really "getting there" now. The past month or so has been really productive for me, and I've improved on the
game a lot. I've been doing some Photoshop work myself lately, and I feel I'm only getting better and better at it. I updated
some of the old textures and took out a few which just wasn't up to snuff.
The HyperMall received a small facelift:
Some new locations in Skid Row with new textures:
I even redid some of the GUI graphics:
(quite an improvement to the two freaks on the right which were previously used, don't you think?)
(sorry Jay! I needed them in higher resolution :))
Finally added doors to buildings. Real doors, that actually open when you step up to them. Yes! I don't know
what took me so long to add this. I guess I just wasn't sure how I was gonna do it until recently. The doors
are handled by the client completely. No need for the server to check things. Tiles can be flagged as doors with
the map editor, and by using simple collision detection the client just checks if any character is near the door.
If yes, open it (by increasing the tile cube Z-offset making the door slide up, like the doors in Doom and Doom II),
and if no - close it again, unless it's already closed.
Added some new tile cube slope types. I haven't used any of them yet, but now they're available if I should want to.
Updated the map format to allow sound effects coming from tiles. In the map editor, tiles can now be set to play
looping samples. For example, burning dumpsters now give off a fire sparkling sound effect, and ceiling fans make
spinning noises.
Object cooldowns are now saved with players. No more cheating!
Rewrote the shadow drawing routine. The previous one didn't support custom tile cube sizes very good.
Mobs can now fight each other, and can be set to aggro other mobs of any kind. I used this to create an interesting
shoot-out between two rival gangs in one of the alleys in Skid Row.
The server now checks for blocking walls when two characters are fighting each other. It is no longer possible
to shoot through walls. This is still a bit bugged though -- a player will be smart enough to move if a wall is blocking,
but mobs don't understand this yet and simply stand still, unable to attack. I will fix this soon.
Removed the /WHO command and instead replaced it with a client GUI window which lists all players, along with the
option to send a private message. This makes browsing online players a lot more comfortable.
I borrowed (stole :)) the "make this inn my home"-feature from World of Warcraft. Players may now set their respawn
location to the Capsule Hotel or their private apartments. More locations will be available later.
Grain effect! This came about when I was experimenting with a TV static-effect which I wanted to use instead of
fade ins and outs. My idea was that TV noise would appear on the screen for a short second when the player walks
between rooms, to cut between the scenes and give a sort of techno feel. However, this didn't look very good, but I
instead discovered another way I could use it. By simply blending in uniform noise (in my case a pre-rendered texture)
and randomly rotating it for variation, an interesting grain effect was created. This added a gritty, cinematic feel
to the scene. It doesn't look very good in screenshots though, so I did this GIF animation
to display here. It's pretty big (678 kb), but there was no other way. Take a look!
Added a dance animation, mainly for the strippers in the sex clubs. But players can also dance by using the
socials /DANCE and /TRAVOLTA :)
Added a button for sorting the inventory. This is still under construction though.
Objects (items) lying on the ground now have shadows underneath them as well. I must have overlooked this earlier.
Improved server security.
I was talking about graphics a bit higher up. Even though my game uses nowadays ancient technology for graphics rendering,
I still place a lot of importance in how things look and are executed. I spend hours just tweaking textures and settings to
make sure everything comes out the way I've visualized it in my head. Following are some screenshots of how scenes are rendered,
broken down into their individual stages.
This is a scene with all the fancy stuff turned off. No lighting. No shadows. No lightmaps. No rain or grain effect. As you
can see, it looks rather flat. The street lamps for example -- are they hanging in the air or are they lying on the ground?
It can be difficult to tell.
Turning on shadows. Even though they're "fake" shadows (because they're neither volumetric or projected) they instantly
add depth and some realism to the scene. My method for placing shadows is so simple it's almost ridiculous. It just checks
the mapfile for roofs, and draws the same texture on the ground underneath it. It also draws shadows next to walls which
are located to the left or right. I do utilize the stencil buffer to some extent, but it's so basic it's hardly worth mentioning.
Turning on lighting. This is just normal GL lighting with some basic settings. While it could probably be improved on a lot,
I just use it to darken down the scene a little bit to get the right "tone". Also, the scene lights up very subtle around
the player, almost not noticeable.
Turning on lightmaps and the rain effect. Lightmaps are a very cheap trick which I believe John Carmack was the first person
to use in games (Quake), to illuminate walls and floors for a low performance cost. Lightmaps are pre-rendered textures which
are simply blended into the scene to simulate static lights. I place them on the street lamps to "light" up the ground underneath.
I also use them for wall lights.
And finally - turning on the new grain effect. I must admit that it doesn't look particularly good at all in this screenshot,
but it adds a whole new level of mood when in motion. It gives of an eerie noir-like feeling and makes the entire scene feel more
cinematic. If you missed the link to the GIF example earlier in my post, here it is again.
I close today's post with two screenshots from a simple intro I created yesterday, and a new fancy-looking title/login screen.
NOTE! The game is NOT called "Cyberpunk Online", and neither will it be later on. This is just the temporary work name we use until
we've come up with a better one.
14 November 2008
Slightly improved the GUI by adding an effect which makes a clickable button "light up" if the mouse pointer is above it.
Rewrote the entire player saving/loading code. The previous code was a bit bugged, and caused corrupt player files sometimes.
Items can no longer be dropped on non-walkable tiles. This is to prevent things like benches, couches, chairs, etc from blocking items.
Pressing F5 toggles the client interface on/off (may come in handy if a player desires to take some nice screenshots).
For the past three days I've been working on PLAYER APARTMENTS. Players may now buy an Apartment Keycard (which costs, aherm... a LOT), and
by having it in their inventory they may access an elevator inside the apartment building, which teleports them to their private apartment. In it,
items can be dropped on the floor which will never decay. They are saved on disconnect and loaded back when the player reconnects. There's also a
bed, a chair and a sofa which can be used for resting. At first, I was a bit puzzled about how I was gonna program the entire thing, but then
I came up with a very simple idea. Even though a player is alone inside his/her private apartment, all players are actually in the one same room
(on the server), but hidden from each other. So simple, but so effective!
I also took time to update the map file format and editor a little bit. When I started working on the 3D part of this game, my main inspiration was
old GTA. I more or less "copied" the graphics engine, which loads the world from a 2D map and draws each tile as a 3D cube. Cubes are drawn "above" each
other to give the impression of buildings and skyscrapers. Because each tile/cube is the same size, this gives a very square-y look. It works well
for outdoor settings, but very bad for interiors. This is somehing I've felt I needed to improve for a long time now. So I did, and I also had to
rewrite the function which draws the cubes. I think it took about 8-9 hours or so, but it was worth it. The result is much, much better. It is now
possible to adjust both the width and height of cubes, and also the x/y-offset. My engine now resembles the Build-engine more than the GTA one.
Here are some screenshots from the player apartment. Notice for example the cupboards in the kitchen, the TV and speakers on the wall in the living
room, the computer screen and wall lights in the bed room, and the light tubes in both the bathroom and living room.
I also updated the character graphics by adding some simple shading/bluring to the bodies. This was pretty easy to achieve by multiplying layers
in Photoshop. It could probably be done much better and more realistic, but it's still a big improvement (imho) to the previous graphics. The character
to the far right in the images below is what the final result looks like now, and the one next to it is how characters looked like before.
A finally, here's a dramatic outdoor screenshot in 1680x1050 widescreen with the interface turned off. I also added some blur with Photoshop, to
simulate a bloom effect. This is what I think the game could look like if I sometime decide to add a shader to it... looks pretty nice, no? :)
6 November 2008
October sure was a productive month! I've been working on the game pretty much EVERY DAY, and I'm still enjoying everything I do. We've been playtesting
the game a lot recently, and it appears to be more stable than ever. There are still a few random client and server crashes occuring from time to time, but
it's getting better and better. Plus, the game is FUN! A while ago, I was a bit worried whether or not the game would be any fun at all for players to actually
play. Being the programmer, this is sometimes hard to "feel" since I know all the mechanics behind the game. But people in our little test-team played it
for hours (yes, HOURS) and they seemed to enjoy it quite a lot. That it just brilliant and it makes me very happy and proud.
So, what's new?
Players may now reset their attributes at the Attribute Trainer. This is useful if they accidently spend points on an attribute they no longer need or want.
A new tech store called High-Tech Low-Life on Essentials Street. Also renamed the drug store to Drugs "R" Us and the armor store to Protect-Ya-Neck.
HOVERBOARDS! These are inspired by the hovering skateboards in Back to the Future part II. They require vehicle training which is now available at level 15
instead of 25. Motorcycles still require level 25 though. The hoverboards look really cool and they increase a player's movement speed.
Lots of missions were added and improved.
Roads (well, tiles) which require a vehicle. This is for a planned highway road, which will only be accessible for players driving a vehicle.
Some new object types were introduced to handle shops and item descriptions better. They are OBJECT_MISSION, OBJECT_CLOTHES, OBJECT_MEDICINE, OBJECT_GADGET,
OBJECT_BLUEPRINT, OBJECT_PART, OBJECT_VEHICLE. These types are handled by the server and client internally.
Tile graphics (textures) can now be rotated. Yes, I know... I've been lazy...
Rotating textures resulted in a very nice fan sitting in the roof in some stores. The rotating texture makes the fan look like it's spinning. Weeee!
Changed ammo types from "light", "medium" and "heavy" to 9mm and 5.56mm. More ammo types will be added later. It just felt too generic. Plus, now there's no
limit to just three kinds of ammo types, like earlier ("light" ammo was for "light firearms", "medium" ammo for... yeah you get the point). It took some code rewrite
but it was worth it.
Mission items dropped by mobs are now "tagged" by (assigned to) the player who started attacking the mob. This is to prevent other players from stealing
mission item drops. If another player attempts to take the item, they will simply get a message saying "You can't take it. It belongs to XXXX."
Melee weapons are now visible when fighting. This is still bugged though... yes, lazy again ;-)
Added a subway station where players may buy tickets from a booth, give it to a ticket controller and teleport to the destination location. Very simple, but useful.
For now there are only two stations though.
A very simple ENGINEERING skill was added. Players may buy (or find) blueprints which are used for crafting items. A blueprint requires materials, like circuit
ships, scrap metal, spark plugs... whatever. If the player right-clicks the blueprint, the server checks if he/she has the required materials in inventory, and if yes -
removes them and the blueprint, and creates the item. Tadaa...
Mobs who are standing still now return to their positions after a fight. They were previously bugged and would get stuck in places.
Fixed a bug that caused players to get thrown off their vehicles when entering new rooms, even though they were outdoors.
A function called OnTimer() was added to the LUA-scripting part which is checked for and executed by a timer assigned to any mob. For example, the subway
drunk has a timer set to 30 seconds. Every 30 second, the OnTimer() function is called which - in this case - creates a Whiskey bottle for the mob and tells it to
consume it. In the game, players will see the drunk drink Whiskey and get drunk. These type of scripting can be used for giving a more life-like behaviour to characters
in the game!
A player colliding with another player standing still will force the second player (the one standing still :-)) to move a tile. This is to prevent players from
blocking ground items, like a sewer manhole.
Items worn on hands (like gloves) are now visible on the character.
Pressing R with the client brings up a "Surrounding"-window which displays all characters and items in the room and buttons labeled "Target" and "Take" next to them.
This is useful when trying to locate an item in a room that has hundreds lying around on the ground, or for quickly targeting a mob or player.
"&"-characters now work when typing messages. This was bugged earlier, because & is used internally as an escape character for colours.
Chatbubbles (when players and mobs are talking) are now stacked above each other, instead of just replacing the previous chatbubble like earlier. It was easy to miss
messages before, plus it looked a bit weird. They also fade out nicely now.
More and improved graphics, sound effects, music, items, dialogue... everything.
And here are two recent screenshots. The first one shows another example of scripted behaviour, handled by OnTimer(). Slim Juice and his two thugs are beating up a
drug abuser who owns them money. Marcus responds by saying things like "I don't have them!" and "Please don't hurt me!". The seconds screenshot shows an
improved armor store.
Oh, and by the way! Are you interested in playtesting or in other ways help out with the game? Contact me (Kada) on MSN: kada@telia.com
or through our forum on http://jayecifer.com/cyberpunk/.
22 October 2008
For this month's update, please see this thread over at our forum.
(yes, I'm a bit lazy right now!)
20 August 2008
Long time no update (again). Well, still working on stuff. Progress has been a bit slow lately due to some recent real-life events which had
a higher priority, but now I'm back in business again. It feels kinda slow to come back after I've done a pause, but after a while I get deep
down in it again. I've done this a few times now, so trust me, I know!
Repair items - mobs can be flagged as CHARACTER_REPAIR and will then function as repairers/fixers. Just drop an item with less than 100%
durability on the mob and he/she will fix it for a price. Works for weapons and armor/clothes only (as they are the only items that lose
durability for the time being).
Shops (that is, shop mobs) will now refuse to purchase items that have no value, i.e. they are worth 0 dollars. They were previously accepting
the items while giving the players, ehrm... 0 dollars.
Water-splash effect! This took a while to get right. While walking (or driving) in water or sewer slime, water will splash around the player
and a "splash" sound effect is played at the same time. A very nice detail, in my opinion. This was done by tweaking around with the already-existing
particle engine.
Missions now affect alignment as well. If it's been added to a mission's script.
Pets! Players can now buy pet rats, roaches and sewer sludge from a pet store inside HyperMall which will follow the player around like an idiot.
But they're cute!
Optionable cooldown added to food and drinks. This is to prevent abusing buffs that are given through food and drinks.
First aid skill added/revised - This is a trainable skill. First aid kits are sold at the drug store in the game. The skill level determines
whether or not the player succeeds in using the first aid kit. As with other skills, the skill level will increase as you use the skill, and having
a higher INTELLIGENCE attribute makes it happen even more often.
Some skills now have level requirements. You are, for example, not supposed to be able to drive vehicles until later in the game.
Also, Jayecifer and our new companion Tyr (from Hungary!) did a lot of new object icons which have been added to the game. Check out
this link for a taste of that. They look amazing. Thanks a lot, guys.
And last but not least - a few recent screenshots:
18 June 2008
First off, Jayecifer has set up a new forum at http://jayecifer.com/cyberpunk/ which
I encourage all who read my blog to sign up at, and participate in the discussions going on there (which aren't many right now, but that's
only because nobody knows about it!).
New features since last update:
Introduced "world time". This is time inside the game world. One second in real life is one minute in the game, so
60 seconds is 1 hour. In 24 minutes an entire day has passed in the game. My idea was to have different lighting on the client
side so the player would experience morning, noon, evening and night, but it didn't look very good. Most of the graphics have been
designed to look good during "night". Only. The game is supposed to be dark, all the time... But in the future, the world time
could be used to trigger different events in the game.
The maps (rooms) can now be divided into "zones" with the map editor. There can be 8 different zones in each map. These zones are
used to restrict mob movement. A mob can be placed on the map and assigned to a zone, which will force the mob to - for example - stay inside
a building, don't leave a parking lot, or whatever.
"Xnames" (borrowed from CircleMUD). This is to prevent players from naming their characters "fuck", "pussy", etc. Yeah, it's lame for a
hardcore cyberpunk game, but still... I want to be able to have the option. Illegal words are simply added to a textfile and checked against
when somebody wants to create a new character on the server.
Admin accounts. A player can now be flagged as "admin", preventing normal players from accessing debug commands.
Players can now be banned from the server by admins.
Removed the random item drop system. Mobs now drop what they are carrying on them, and never drop random ammounts of money anymore (unless
they were carrying it). If players want to make money, they will have to pickup what mobs drop, take it to a store and sell it. This is more
realistic, plus it felt pretty stupid having rats on the pier drop baseball bats!
Dropped items were previously displayed with random rotation on the client side, for variation. It still looked too static because they
were all centered on the tile they were dropped on. This made it difficult to spot items under items. So I removed the centering and made the positioning
random TOO. For example, if a mob drops a shirt, pants and shoes, the three items will now display as scattered across the tile instead of in
just one big pile. It looks better, and it makes it easier to pickup items.
Re-did skill training. Instead of having players spend character points (CP) on both attributes and skills, players now gain 5 character points (CP)
and 1 skill point (SP) per level. The skill points are used for "buying" a new skill from a trainer. When learning a new skill, the default skill level
is set to 25% (meaning the player has a 25% of success while using the skill). Everytime the skill is used, no matter if it fails or succeeds, the player
has a chance of increasing the skill level. The speed rate of "practicing" skills like this depends on the player's INTELLIGENCE attribute.
Jayecifer did some really cool cars which I quickly implemented into the game. I just used the previous motorcycle code and changed the graphics. The cars
move a bit clumsy because of my poor animation code (have you ever seen a car spin around while standing still?), but I'll just fix that later on.
Also, Joel did a lot of new object graphics and textures. He came up with a set of textures for a coffin hotel (just like in Neuromancer!) which looks
really good. It's been really fun to see all the ideas he's been having.
(Let me also just add that I can't thank both of you guys enough for doing all these graphics and supporting me with concept ideas. I would have never
been able to do everything by myself, and I'm very grateful. Thanks also to Karl and Aarne, if you're reading this!).
I also started re-doing a lot of the maps (rooms), items and mobs from scratch. Yes! It was necessary. There was so much junk and unused stuff and it was
just difficult organizing the whole thing. Now that I've re-done all the content, things are much more balanced and easier to maintain.
Last but not least: two 3D screenshots from a street with the two restaurants Pasta Plaza and Burger Shack, and from the HyperMall entrance and coffin hotel.
22 May 2008
FINALLY! The dual wield skill now works! This is something that has been on my "to do"-list for months now. I went back to the previous
test code and wrapped it up as quickly as possible. I then spent the past two days polishing it and now it's up and running (with some
small bugs here and there...). But it works, and I even had animation (for the client) already prepared a long time ago. It's so much
fun to play the game now! Let's take a look at the King of Pop dual-wielding two submachine guns:
Looks pretty cool, huh? How about dual-wielding two grenade launchers?
Mohahaha! Total carnage! Well, you're not supposed to be able to wield two grenade launchers at the same time, but since we're in debug
mode here we're allowed to do all kinds of things. So what else did I add lately? Oh yeah, I experimented with a new kind of lightmap
texture so I could have the motorcycles project light in front of them, like car lights. I made the texture from scratch by first drawing
a triangle, then blurring it and cropping it using feather in Photoshop. The result looks like this:
When placed below the motorcycles in the game, the result looks something like this:
Looks pretty good, don't you think? It looks even better in motion and it did a lot for the overall atmosphere of the game. Imagine
driving around dark alleys with the motorcycle light in front of you. Mmmmm!
Also improved the sound effects for the motorcycles. They now loop properly instead of playing shortly once every tile you
travel, and then the motorcycle was silent. There's now a looping sound while in motion (driving), and one for "idle".
Characters now turn around smoothly when changing angles. Previously characters would just change the angle they're facing instantly,
making movement look pretty static. It looked even worse while driving motorcycles.
Weapons now have recoil (client animation only).
I added a new variable for ground tiles in the map format called "litter", which can be toggled on and off. If on, the client will
generate random litter (like newspapers, flyers, etc) on that tile when entering the room. If you leave the room and come back, the litter
will be different. Pretty cool! This is just an experiment though, and I'm not entirely satisfied with how it looks yet. I may remove
this again, but for now I'm keeping it. (see the screenshot below)
20 May 2008
A new particle rain effect that FINALLY looks sane. I think this was my third or forth attempt at writing an effect that would resemble
something like rain. Raindrops falling from the sky are drawn as polygon lines. Collision is checked against roofs and the ground, and if the
rain hits it a splash is created there (using previously existing particle routines). It looks really GOOD in motion! Less good in screenshots
though.
A nice thunder effect to go with the rain was added.
AFFECT_BLEED now also deals 1 damage per tick so that characters are actually... bleeding. This was previously purely cosmetic. Characters
start to bleed if they're hit critically in combat and may - you guessed it - bleed to death now. Mohahaha!
Lightmaps may now be set to flicker! Oh yes! There's also a short buzzing sound effect as lights flicker on and off. This added A LOT to
the overall atmosphere of the game!
When drunk (AFFECT_DRUNK), characters now also burp randomly. Yes, this was important. Hahaha!
Here's a YouTube-video I uploaded to demonstrate the rain effect. I was also able to record SOUND for the first time! (amazing, isn't it?).
So I'm walking around a little in the red light district of the game to show you some of the (hopefully) cyberpunk-ish environments, and
also the old town square. Music and sounds are from the game. DO NOTE that all music is temporary. They are loops of commercial music
which I'm using for test purposes and to set a certain mood. They will be changed before releasing the game.
You can also download a higher quality version of the movie (~24 mb) and watch it offline. And while we're at it,
let's take a look at some new screenshots! The first two are from the title screen and the character creation screen.
16 May 2008
New LUA-function OnMeet() can be assigned to any mob and is triggered when a player steps up to it. This can be used to make
a mob react to a player getting close, like have it attack, have it say something or react a certain way.
Characters standing on a tile that has EFFECT_FIRE assigned to it will now be set on fire for a few seconds (and take damage ofcourse).
Some weird-looking shadows (from tiles) were fixed. It's not great, but looks better atleast.
There is now some test music in the game too. Music is streamed from MP3 files in real-time using FMOD and it seems to works like a charm.
Minimap! Well, it's very simple... and not very good-looking, but I'm sure it can be useful sometimes. Aggressive mobs are marked with RED dots
(not seen in the image below though).
I'm also working on a title screen and character creation screen, which is something I've felt has been missing for a long time now. I'm having
some problems with the overall "design" of these particular screens though. I'm not very satisfied with how they look, seeing how this is what
a new player will be presented with the first time he/she launches the game. I want them to look inviting and leave a good first impression. But
I'm guessing they are of a more practical importance rather than cosmetic right now.
And here's a recent screenshot from a new area I've temporarily called Industrial Pier.
11 May 2008
Okay I admit. It took me an entire month just to get that post up on Gamedev, but now that I did it I
was *FINALLY* able to get rid of the freaking annoying bug in the server code that helped stall the
development of the game for so long. It was amazing to watch the game in action again. I haven't looked
at it for a while, and I was amazed at my own creation. Well, our creation. The reason it looks so good
is because of Jayecifer's and Joel's graphics. Are you guys still around? I miss talking to you. And Karl,
if you're reading this.
Now that I've got everything up and running again I'm gonna try work through my TODO list and
maybe - just maybe - this game could finally be released some day this year.
9 April 2008
I once again apologize for the lack of any recent updates. I've had some personal problems starting
in february but now it's coming back to normal again. There's also a bug in the server code which I
haven't been able to solve for several weeks, which also contributed to putting this project on ice
for a while. I'm going to post a thread on Gamedev later tonight and ask for help to solve the bug,
so I can get back to working on the game again.
Some new features since last update:
New affect AFFECT_DRUNK from drinking alcoholic beverages will make the player character a bit
difficult to "steer".
The message log (for world and combat messages) has been improved and now has two tabs so the
player can switch between them. This cuts down on the ammount of text visible on the screen.
Characters now move less jerky when FPS is low.
The skill window also had tabs added so the player can switch between Weapons, Passive and Combat
type of skills.
Characters now puke randomly when they are affected by radiation.
Lighmaps on walls! Previously, lightmaps could only be placed on the ground which made everything
look really flat. The map editor and the format of the mapfiles had to be reconstructed, but light
looks much more realistic now.
"Ping-pong" animation for tiles (means animations can also rewind instead of just jumping to the
beginning of the animation again).
Option added to switch between linear or no (nearest) texture filtering.
Characters who are attacked while riding motorcycles risk getting thrown off if hit.
New loading routine for graphics which makes everything much more dynamic. Textures that haven't
been displayed for two minutes are automatically deleted from memory. Once they're needed again, they're
reloaded for another two minutes. This also fixed a memory leak which extended up to over 100 mb (I
hadn't noticed it before). Memory usage now sits at a permanent 16-17 mb instead.
11 February 2008
The game is probably more alive now than ever before! We are now a team of four people working on the game almost daily,
using MSN for communication and file transfers. Our latest partner in crime is Kamoko from the UK who has been doing some extensive
playtesting, and is currently writing a tool for editing mobs and items. Brilliant! Such a tool will certainly come in handy
when it's time to start work on actual game content. And since I have no idea how to write Windows applications myself, I am
ofcourse grateful for any help I can get.
New additions to the game code since the past few days are:
Thrown weapons (currently a molotov cocktail that explodes and sets the opponent on fire!)
A rocket launcher that does the same as above
A plasma gun (with light-blue barrel fire... very cool)
Redid particle fire to use "only" 128 particles instead of 256 and still look good. The fire now also make a sound effect, which also required me to update the sound code with some changes.
Affects (aka "buffs" or "debuffs") are now shown as icons on the screen and next to an affected character. This certainly makes it easier to see what's going on in the game!
After landing a critical strike on an opponent, he/she starts to bleed all over the floor while losing health over time (lasts 4 seconds)
The client now also supports widescreen resolutions
Lots of new graphics by Jayecifer and fisk0 (Joel) including weapons, updated blood splatter, mobs, mouse pointers and various items
And last but not least.... And this is by far the most important feature added yet: After leg tripping an opponent (with the skill Leg Trip), he/she will
randomly puke on the ground because of getting sick by spinning around. The vomit is an object which (yes, you guessed it!) is takeable by a player,
and can be eaten as food. Yummy!
And here is a brand new YouTube video demonstrating the current version of the game! Alas, just like when I recorded the previous video
I had to turn off the sound effects this time too, and the animation is pretty jerky. This is because Fraps doesn't run very well on
my machine... (it's getting old). I assure you the real game runs very smooth though.
Click here if you'd like to download and see this video in better quality (approx 5 mb).
10 February 2008
Jayecifer has started blogging about his work on the graphics! This is very cool, and definitely more interesting to read about than
my technical mumbo-jumbo. Check out all the creativity that goes on, right here: http://www.jayecifer.com/gamedev/
6 February 2008
Time for a small update again. Damn! I promised myself I was gonna wrap this thing up and release it, but it seems that there's always some
piece of code that needs to be fixed, replaced, added, polished or whatever. Not to mention the actual game content, which I have only just
BEGUN working on.... *starts sweating heavily*
Anyway...
Updated the combat system! There are now 6 character attributes instead of 3 (4 before I removed psionics), and they are:
Strength, Dexterity, Reflexes, Intelligence, Condition and Luck. I also improved the character screen and the trainer window to
display detailed numbers and combat stats. Hopefully the player will now feel he has a bit more control of his character development.
Finally there's graphics for shooting with guns! Even if it's just one frame of animation, it makes a lot of difference...
(see screenshot to the right).
Fixed an annoying bug that made the game client crash if somebody died when there were two or more players in the same room (this bug
and various other "kill"-bugs had haunted me for weeks)
Items of type OBJECT_FOOD and OBJECT_DRINK now use LUA scripts to do whatever the food is supposed to do, be it give a buff, poison the player or whatever...
Items of type OBJECT_CONSUMABLE (like the stimpacks) now have cooldowns which can be set to any value in seconds
Redid the particles for gunfire. They will no longer look weird if the FPS drops below 60.
Missions can now be cancelled (if you managed to screw it up somehow)
The new combat system took a few days to figure out. I wanted all attributes to somehow be equally important and in symbiosis with each other.
I think the current system works pretty good for a hack'n'slash game like this. Here's how it breaks down...
STRENGTH
Increases melee attack damage and the maximum weight (items) you can carry. DEXTERITY
Increases ranged attack damage. REFLEXES
Increases the chance to dodge both melee and ranged attacks. The max is 75% chance. INTELLIGENCE
This is unused for now, but it will be used to improve skills. Skills will have shorter cooldown, cost less action points, and you will be
generally better with using skills (like "hacking" which I'm planning on implementing). CONDITION
Increases maximum health points and the chance to resist fatigue increase when in combat. If I haven't mentioned it already, you get fatigue
when you're hit or when you attack. The higher your fatigue is, the lesser damage you'll deal (penalty). By training condition, you will
resist fatigue increase better. Max is 50% chance. LUCK
Increases critical strike chance. When you get a critical strike on an enemy, you do twice the damage! The max is 75% chance. Luck also
increases the chance for successful rerolls. I'll explain how that works... A lot of actions in the game are decided by a "roll" (a virtual
dice) if it is to be successful or fail, like for example hitting or missing with a gun. If you got a skill level of say 57% in Light Firearms,
it means you have a 57% chance of hitting your opponent. BUT, should you FAIL this roll, you will automatically roll a second time (the REROLL),
and this is based on your luck attribute. So as you can see, having a lot of points in this attribute can be VERY useful as it affects
nearly everything in the game.
(by the way, with "max" I mean the chance percentage a player gets if he puts ALL his character points on just one attribute, which is an
insane thing to do and won't work in the long run).
12 January 2008
Just updating with two new screenshots, because I feel it's been long enough since I posted some. These are from a dark alley, and from the
subway (which does NOT have any train arriving or leaving, unfortunately... maybe later!). The prostitute in the screenshot thanks me because
I recently finished her quest/mission which involves giving her food and something to drink.
Other new improvements to the game are:
Leg Trip and Berzerk skills. The first one disables the opponent's movement and the second one doubles the attack speed, both for just a few seconds.
The (random) item drops from killed mobs are now handled much better, and no longer crashes the server which the previous code did from
times to times.
Helmets are now shown on characters when worn!
2 January 2008
I felt burned out and needed a few weeks pause to "recharge my batteries", but on Christmas Day I resumed my programming again. I decided
to strip down the game a little. I felt the direction it was going was a little over-ambitious and would be difficult to accomplish. Right
now, I just wanna finish a first version of the game and release it to the public. Additional features and content can be added later. So,
the first thing I did was to remove the entire psionics (spells) system, and psionic power (mana). I felt it was too complicated to work
on right now. Maybe there will be psionics later, I'll have to see about that. Skills are still there though, and they're basically the
same thing. Instead of psionic power, characters now have Action Points (AP) instead, with max being 100 AP regardless of what level the
character is. Skills cost a certain ammount of AP to perform, and AP slowly recharges (even in combat) back up to 100 again. This is ofcourse
to prevent endless spamming of skills in combat and to increase the challenge of using skills.
On Christmas Day, I basically wrote down in my mind these steps as a plan on how to get the game "finished":
Wrap up the game engine (no more ambitious features, just make it stable enough)
Re-do all the content (locations, items, mobs, quests) and keep it to a minimum (we can add "fun stuff" later)
Fix all known bugs
Release the game
Is it fun? Are people playing it? Add more features to the game
Stuff I've done so far since I resumed my programming:
Removed psionics, psionic power and the psionics trainer
Removed intelligence (no use for it any more) and abstinence (wasn't used yet anyway...)
Added action points instead
Skills now cost action points
Stimpacks which instantly heal lost health (like healing potions)
Master volume in options window
Random death messages display when characters die, like for example when killed with a blade: "Street Punk makes a funny gurgling sound as you cut his throat."
Affects for characters, like RADIATION, STUNNED, DISORIENTED, etc etc. These can be applied to a character and have different effects. Affects have timers. Like for example, if you
step into a radioactive field you will be affected by RADIATION for 4 seconds. Each second you'll lose 1-3 health. Other affects such as STUNNED are applied when using the
new Leg Trip skill on an opponent in combat, preventing him from moving or attacking for a few seconds.
Ranged weapons now have a minimum range distance as well as a maximum one, which means that you must now stand a few meters back when using firearms. Small firearms (such as pistols)
can be fired from two tiles away, but medium ones (rifles) and heavy ones (plasma guns) require greater distance or they won't work. This makes it more fair for melee attackers too.
When affected by radiation, characters now turn green
Most prioritized on my "to do"-list:
Add a few more skills
Re-do function for animating characters so we can do stuff like spin them around (when disoriented), have different gun fires for different weapons, etc etc
Re-do function for drawing gun fire particles (it doesn't work well when FPS drops low)
LUA scripts still need some improvements
Graphics when a character is holding a gun has been missing for way too long now....
Login screen and character generation screen
Experiment with OpenGL display lists for fonts (might improve FPS on slower machines)
Some basic content like locations, items, mobs and quests
That's where I am right now, more or less. By the way! Is there anyone out there who might possibly have a suggestion for a NAME of the game
when it's released? I haven't actually thought about a name that much. I just refer to it as "the cyberpunk game" right now, but that's not
really a good title so I'll need a real one. There isn't really any story in the game since it's a hack'n'slash, so it might be hard to come up
with something right now. BUT! If you DO have a suggestion, feel free to let me know! The best game title I know of for a game with similar themes
is Circuit's Edge (the 1990 game by Westwood). I'm looking for a name similar to that one. Something that doesn't relate to any specific story
in the game or so. Let me know!