Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411652 Posts in 69672 Topics- by 58647 Members - Latest Member: JpegTheTerrible

December 03, 2024, 10:43:14 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsThe Inflicted - Horror Adventure Game
Pages: [1] 2 3 ... 8
Print
Author Topic: The Inflicted - Horror Adventure Game  (Read 32401 times)
zamp
Level 1
*



View Profile
« on: April 13, 2011, 03:00:55 PM »

The Inflicted - A battle for sanity

« Last Edit: December 02, 2020, 11:56:35 PM by zamp » Logged
zamp
Level 1
*



View Profile
« Reply #1 on: April 13, 2011, 03:03:56 PM »

I wanted to keep the new feature listings separate from the main post.

Features added recently:
Tooltips when not moving the mouse

Status screen (with very low sanity)
The face photo changes expression based on sanity and the less health the player has more blood is added on the photo
Btw my avatar shows all phases.

Dialogs

Material based footstep sounds
No screenshot for this since it's an audio thing Tongue
« Last Edit: July 20, 2011, 08:34:25 PM by zamp » Logged
zamp
Level 1
*



View Profile
« Reply #2 on: April 15, 2011, 09:32:34 AM »

Here's a video showing the new two features, flickering lights and door keypads with dynamic lights


« Last Edit: July 20, 2011, 08:34:39 PM by zamp » Logged
flavio
Level 4
****



View Profile WWW
« Reply #3 on: April 16, 2011, 07:15:08 AM »

Very interesting concept and very good graphics! I'll follow this!
Logged

zamp
Level 1
*



View Profile
« Reply #4 on: April 16, 2011, 09:30:02 AM »

Very interesting concept and very good graphics! I'll follow this!

Tears of Joy

Showing the new AI routine:


« Last Edit: July 20, 2011, 08:34:49 PM by zamp » Logged
AaronLee
Level 1
*



View Profile
« Reply #5 on: April 16, 2011, 09:36:19 PM »

Neat mechanics, this seems like a well built topdown shooter, which says a lot as the genre tends to be fodder for early GM users Tongue
Logged

zamp
Level 1
*



View Profile
« Reply #6 on: April 17, 2011, 01:16:20 PM »

Neat mechanics, this seems like a well built topdown shooter, which says a lot as the genre tends to be fodder for early GM users Tongue

Not quite sure what you mean by fodder for GM users.. but thanks I suppose
Logged
AaronLee
Level 1
*



View Profile
« Reply #7 on: April 17, 2011, 07:36:31 PM »

No worries, was just making a friendly snark at yoyogames.

Anyway, I really like the snake boss bit, original and very challenging by the looks of it.
Logged

zamp
Level 1
*



View Profile
« Reply #8 on: April 18, 2011, 08:45:13 AM »

Anyway, I really like the snake boss bit, original and very challenging by the looks of it.

Thanks, it's not really that challenging once you figure out the rhythm/tactics. I failed in the boss video on purpose Wink
Logged
zamp
Level 1
*



View Profile
« Reply #9 on: April 28, 2011, 05:07:40 PM »

Nothing new to report on the game but... *drumroll* the website is complete!
http://protocol.koode.org  Hand Metal Left Evil Hand Metal Right
Logged
PowRTocH
Guest
« Reply #10 on: April 28, 2011, 06:13:09 PM »

This game looks pretty excellent! Only gripe is the resolution mixing between the fonts/menus and in-game graphics, that's always jarring in games. I hope you consider changing it. But I'll be following this for sure, very nice graphics and mood.
Logged
zamp
Level 1
*



View Profile
« Reply #11 on: July 19, 2011, 09:57:37 AM »

Sorry for the long wait but here is an update of game progress.



I lost interest in the singleplayer game and decided to work on the multiplayer game instead.
I rewrote most of the server code (I had worked on multiplayer version of this game before) and implemented my own policy socket server in the server application itself. Now I don't have to run a separate socket policy server  Hand Thumbs Up LeftSmiley
If you're interested a socket policy server is flash's security measure. They say it prevents man in the middle attack but I still think you can use a proxy.

Updates in the engine:
 - Occlusion rendering (can't see behind)
 - Sprite tinting (it's been in the engine itself for quite a while but wasn't in use. Characters hairs are tinted)

Hmm.. Not that many updates in the engine. There are a lot of internal updates (networking mostly) which I won't discuss in public.

Updates in the server:
 - LUA scripting for weapons (also LUA for AI in the future)
 - Dynamic world loading (Only areas where people are, are kept in memory)

Hmm.. Not that many server updates either, hehehe. Same as with the client/engine there are a weeks worth of internal updates which I won't discuss.

I'll post a link to the game when it has spawning NPCs in it and everything works. Also I'll try to make more of these updates, writing is not one of my strong suits.
PS. Help is always welcome. Contact me if you have some skill you think could help making this game!
« Last Edit: July 19, 2011, 01:02:45 PM by zamp » Logged
zamp
Level 1
*



View Profile
« Reply #12 on: September 04, 2011, 06:42:20 PM »

Scrap everything I've said before.
I'm again working on the singleplayer horror adventure game rather than the mmorpg game.
Why?
The reason is simple. I'm stupid and I don't have enough resources to do a multiplayer game.
Why am I stupid?
The reason is simple. I spent time on the mmo branch even though I had already scrapped it before.
If I ever tell you that I'm starting to work on the mmo again before the single player is done. Please do tell me to piss off and just work on the damn single player game.

Other than that not much progress to report. I've been lazy and unmotivated recently.
I updated the console library (from an old version) to the new Doomsday Console II.
Which is working like a charm.

And I split up my tileset into separate images. One image per type; floors, furniture, walls etc.
The new version of Tiled Map Editor supports flippable tiles but my engine doesn't. I might add that feature someday. I can flip tiles in photoshop just fine...  Cheesy
Although now that I think of it, it might not even work since all tiles have a slight shadow on the lower right side (45 degree angle).
It's not the most realistic shadow but style>realism any day.
Logged
zamp
Level 1
*



View Profile
« Reply #13 on: September 05, 2011, 10:25:01 PM »

Good news everyone!
I have invented an apparatus that makes strobing light that causes uncontrollable epilepsy attacks!

No seriously, I finished working on ambient lighting. Check out my latest devlog on

Logged
zamp
Level 1
*



View Profile
« Reply #14 on: September 07, 2011, 06:11:50 PM »

Mmmmm stress testing!

After banging the keyboard like a wizard I managed to write my own AStar pathfinder. The one I was using had a ridiculously convoluted way of implementing it. I'm glad to see that monster gone Grin

Then I thought I'll have some fun stress tests and came up with these statistics. Fps is an average.
80 NPCs = 5 fps / 11 MB memory
40 NPCS = 22 fps / 10 MB memory
20 NPCs = 30 fps / 10 MB memory
10 NPCs = 33 fps / 11 MB memory
0 NPCs = 35 fps / 14 MB memory.. odd

Seems like 20 NPCs is the optimal amount and everything below that wont give any more fps boost. I'd say npcs are done and now its time to find out why fps is so low overall...


Totally jammed


Damn that's many
Logged
zamp
Level 1
*



View Profile
« Reply #15 on: September 08, 2011, 10:06:58 AM »

Hello again.
My latest DevLog video didnt quite come out as I planned. I recorded for 40 minutes and the video is 15 minutes long and at the end it plays all of the missing 25 minutes of audio in about 20 seconds...
I'll make a new one once I figure out what went wrong with it.

On another note, check the first post. I added a screenshot of the guards office / outpost and the dialog face graphic of Eric there. Hope you like it!
Cheers! Coffee
Logged
zamp
Level 1
*



View Profile
« Reply #16 on: September 08, 2011, 03:30:14 PM »

Edit: I've also changed the main menu to something more suitable for a horror game. Check it out here.

In one of my DevLogs I showed some stress testing. I wasn't happy how laggy the game got after adding a bunch of NPCs on the map so I thought I'll optimize some more.

Here's where I started. This was what I was supposed to beat. 20 NPCs roaming around in the map.

Full update takes 30ms.. meaning I could crunch out ~ 33 frames per second.

This clearly needed fixing. So what I did was that I...
  • Added a delay to entity update so the entities will only do certain secondary things every 400 ms instead of every frame
  • Added a delay to NPC logic so they wont do secondary targeting tasks every frame but instead every 400 ms
  • Changed pathfinder so it will return the path it has already calculated if it runs out of iterations.
    Added a player variable to the level so if something has to call the player they don't have to go through every object in the game
  • Disabled player hallucination & health effect since it sometimes "hanged up" and caused almost 20ms spikes.
  • Changed NPC rules from array to bitflags

After doing all of this I got these statistics out; do note a few more options have been added.


Nothing I did seemed to affect anything so I continued hunting for the milliseconds.
I added few more timers and noticed that pathfinding took almost all if not all of the object update time and I adventured further into the sources.
I noticed that each pathfinding task took from 1 to about 15 ms to do so I did what shouldve been an obvious choice from the getgo. I made the pathfinder work so that it can only find one path per frame.
This means that if I have 80 NPCs spawned on the map they'll take ~3.2 seconds for all of them to get paths.
There is one problem though. If a few of the NPCs only travel on a short path they might clog up the system and the last of the NPCs on the list might never get a path at all.
This problem can be remedied with good map design and I'm fairly sure I'll never even have more than 10 NPCs roaming around anyways.

Here's a screenshot of the game after optimization. 60 NPCs and game runs at 16 fps. Booyyah!


You're just going to have to trust me on this one but without the graph and stats the game runs at 22fps. Hooray for optimization!


Here's same stats as last time
80 NPCs = 15fps
60 NPCs = 22fps
40 NPCs = 32fps
20 NPCs = 42fps
10 NPCs = 50fps
0 NPCs = 52fps

Compared to the last stats I got the improvement is huge Shocked!

Also if you're interested in the graph class you can grab it here. Note that you will need to supply your own text rendering/alter how the texts are shown.
TimeGraph.as
Code:
package utils
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
/**
* ...
* @author zamp
*/
public class TimeGraph
{
static private var m_timers:Vector.<TimeGraphTimer> = new Vector.<TimeGraphTimer>;
static private var m_graph:BitmapData = null;
static private var m_highestGraph:Number = 100;

static public function time(name:String):uint
{
for each (var t:TimeGraphTimer in m_timers)
if (t.name == name)
return t.count();
// not listed yet
m_timers.push(new TimeGraphTimer(name));
return m_timers[m_timers.length-1].count();
}

static public function get graph():Bitmap
{
if (m_graph == null)
m_graph = new BitmapData(256, 128, false, 0x000000);
return new Bitmap(m_graph);
}

static public function updateGraph():void
{
if (m_graph != null)
{
// draw graph on itself but offset by -1x
var temp:BitmapData = m_graph.clone();
m_graph.fillRect(m_graph.rect, 0x000000);
m_graph.copyPixels(temp, m_graph.rect, new Point( -1, 0));
// draw timer averages on the graph
var n:uint = 0;
for each (var t:TimeGraphTimer in m_timers)
{
m_graph.setPixel(255, Math.floor(m_graph.height - ((t.time / m_highestGraph) * m_graph.height)), t.color);

Text.renderToScreen(t.name + " " + t.time + " ("+t.timeLow+"/"+t.timeHigh+")", 260, n * 14, "left", t.color);
n++;
}
}
}
}

}

TimeGraphTimer.as
Code:
package utils
{
import flash.utils.getTimer;
/**
* ...
* @author zamp
*/
public class TimeGraphTimer
{
private var m_name:String;
private var m_color:uint = 0;
private var m_count:uint = 0;
private var m_time:uint = 0;
private var m_timeHigh:int = 0;
private var m_timeLow:int = 0;

private var m_peakHigh:uint = 0;
private var m_peakLow:uint = 0;

public function TimeGraphTimer(name:String)
{
m_name = name;
m_color = Math.random() * 0xFFFFFF;
}

public function count():uint
{
if (m_peakHigh > 0)
m_peakHigh--;
else
m_timeHigh--;

if (m_peakLow > 0)
m_peakLow--;
else
m_timeLow++;

if (m_count > 0)
{
m_time = (getTimer() - m_count);
if (m_time > m_timeHigh)
{
m_peakHigh = 50;
m_timeHigh = m_time;
}
if (m_time < m_timeLow)
{
m_peakLow = 50;
m_timeLow = m_time;
}
m_count = 0;
} else { // not yet counting
m_count = getTimer();
}
return 0;
}

public function get name():String
{
return m_name;
}

public function get color():uint
{
return m_color;
}

public function get time():uint
{
return m_time;
}

public function get timeLow():uint
{
return m_timeLow;
}

public function get timeHigh():uint
{
return m_timeHigh;
}

}

}

Usage example:
Code:
// add this in your Main class
addChild(TimeGraph.graph);

// add this in your main loop
TimeGraph.updateGraph();

// call this function twice with the same string to get how long it took
// this string is also the name that shows up besides the graph
TimeGraph.time("foo");
// do something here
var timeItTookInMs:uint = TimeGraph.time("foo");
« Last Edit: September 08, 2011, 05:59:44 PM by zamp » Logged
zamp
Level 1
*



View Profile
« Reply #17 on: September 09, 2011, 01:42:21 PM »

Septuple post! Big Laff

Well anyways. Here's an album of some old screenshots from Protocol.
The game makes poor screenshots since you can illuminate an area just by moving your mouse around, with a screenshot you only get one frame.

Also if you want to you can add me on Google+ and contact me frmo there if you want to help with the project or have questions about it. You can also just PM me here. I'll answer to the best of my abilities.
Logged
zamp
Level 1
*



View Profile
« Reply #18 on: September 11, 2011, 06:21:25 AM »

Heyhey! Update woohoo!

What's new in the engine. You can either keep on reading or watch

.
Or do both!

Scriptable NPCs
Now I can edit batch xml files and add commands to direct npcs to do what I want. Meaning I can pretty much tell an NPC to go in a room, pick up an axe, run outside of the room to a locked door, whack the door with the axe, break the door and rescue the pretty girl in the burning room. Oh didn't mention before that the room was on fire? We'll it is!

Überflashy Screen
No not really.. Unless I want to make a flashing screen. What this allows me to do is fade in segments of the game. For example: whenever you change map, the screen will fade black, show a loading bar and fade back in.

Bugfixes
Fixed the elusive shadowcaster offset bug that had been nagging at me for past 3 months
If you look closely at the videos on youtube you can spot the shadows offset by 1 pixel.

Why am I making this overly elaborate thing that uses resource xml files and dynamic file loading and preloaders and this and that and wtf?!
Because I can Evil
Logged
zamp
Level 1
*



View Profile
5
« Reply #19 on: September 14, 2011, 02:19:40 AM »





  • Moar scripting
  • Audio filter thing

I also updated the dialog screen to a more.. well.. bloody one and I grabbed a few screenshots and merged them into one. *Beep* *boop* Coffee




« Last Edit: September 14, 2011, 06:14:59 AM by zamp » Logged
Pages: [1] 2 3 ... 8
Print
Jump to:  

Theme orange-lt created by panic