For a few days now I have been working on a plugin for AGS that allows the
rendering of 3d worlds and sprites through a technique called
raycasting. It works very similar to how the first ego-shooters such as Wolfenstein 3D and Doom 1 worked.
Here is a link to a youtube video for a preview:
(http://i8.photobucket.com/albums/a7/dkh2/thumbnail.jpg) (http://www.youtube.com/watch?v=XjjB3R3Iac4)
Click the image to view the video...
The engine features the following at the moment:
- walls can be rendered at any angle, round parts are possible
- as many textures as you like
- sprites for objects and enemies*
- waypoints for enemies*
- comes with an editor for levels
- is designed in a flexible manner: the actual game controls the crosshair or the weapon or the movement etc. (so more than straightforward shooters are possible)
- runs stable at 40fps, even for more complex scenes (in-depth stress testing will still follow)
*these features are implemented but not shown in the video, sorry, my hard-drive is too full for longer footage.
Any feedback, you think you could use this in a game?
Oh, and before I forget - the next you are going to see about this is most likely going to be a short deathmatch game using this plugin.
This is opening new doors to AGS. Good work!
I really look forward to this! Handshake dkh!
I... sensed a great disturbance of the force, as if a million onion rings of reason cried out... and were suddenly silenced...
Man. That's some great stuff!
Program-wise, I'm interested in how pathfinding and enemy AI will work... And what are the system requirements?
And... when will you update?
That's brilliant dkh. Good work.
This is extremely impressive! How long have you been working on this?
Yeah, yeah, really great.
Small questions ;D (Lots of them, but they're not overly complicated to answer, I hope)
-Will this be able to support a mouselook system?
-Will you be able to have platforms/rooms of varying height? (ie, Doom levels as opposed to Wolfenstein 3d levels)
-Is there a limit on the weapon used? Ie, will it be easy to add multiple weapons to the game, with different damage/rate of fire characteristics?
-How does the level editor work exactly? Do we need to create an image, a 3d file, a text document? A series of regions/hotspots/walkable areas?
-Will there be in game functions for things such as collision detection/item interaction (shooting dudes/getting shot and opening doors), ammo count and player health, to make it easy for non advanced scripters (me) to build their own fps?
Even if the answer to all of these questions is "no", I am still really pumped about this! All these would just be a bonus :P
This is incredibly exciting man! The ability to build an FPS in AGS is something that would absolutely make my year!
It is hard to know whether to be more excited about this or Troopers, you insanely talented freak! ;D
great work, this is really brilliant, it will come a lot in handy with minigames and so on.... :D
Thanks everyone!
QuoteProgram-wise, I'm interested in how pathfinding and enemy AI will work... And what are the system requirements?
At the moment, every enemy has a list of waypoints which are placed in the editor beforehand. Enemies will loop through this list until they see (or hear) the player. What happens in combat, I'm not yet sure about. First I'm thinking of them stopping and just aiming and shooting the player.
System requirements: the plugin just uses allegro's 2d drawing functions so I suppose they aren't exactly high. As I said, on my 7yr old machine with old gfx card it still runs at max frames. It does NOT require the modern d3d driver or anything.
QuoteWill this be able to support a mouselook system?
Already does. :) The controls in the video you can see work exactly like in all modern-day fps on the pc. WASD for moving/strafing, mouse to aim (horizontally and vertically), etc.
Quote
-Will you be able to have platforms/rooms of varying height? (ie, Doom levels as opposed to Wolfenstein 3d levels)
I'm not yet sure about it. Will do some tests to find out exactly how hard this is. Drawing walls with different height is somewhat trivial (already had that in an earlier iteration of the plugin), but walking up steps etc. isn't quite as easy. AND the editor would be much more complicated, too. I'll think about it!
Quote-Is there a limit on the weapon used? Ie, will it be easy to add multiple weapons to the game, with different damage/rate of fire characteristics?
This is a good time to explain the flexibility-feature I put into that feature-list in the first post: the plugin is really just for the rendering of the 3d-stuff, all weapon code for example is in the game itself. Take the way the pistol bounces up and down when running in the video - that's not fixed by the plugin, that is all in the game. And the game is what the user is going to write him- or herself! This means that, while the user has to do more than call one or two simple commands but in return he gets a way more powerful plugin.
So, to summarize, any game any user creates with the plugin can have any number of weapons which can all work completely different - it does not depend on the plugin.
Quote-How does the level editor work exactly? Do we need to create an image, a 3d file, a text document? A series of regions/hotspots/walkable areas?
The editor is just another AGS game and basically works like MS paint. You get a blank canvas and you can draw walls onto it just like drawing lines with the line-tool in paint. Additionally, it features an optional grid at various sizes to which the lines can snap if you want to. Then you can also place sprites for objects, enemies, enemy waypoints and the player start. When saving, you enter a filename and the editor writes the file. That you take and copy into the game folder and load it using the plugin-command LoadMap (or similar). :)
Quote-Will there be in game functions for things such as collision detection/item interaction (shooting dudes/getting shot and opening doors), ammo count and player health, to make it easy for non advanced scripters (me) to build their own fps?
Collision detection between the walls and objects and enemies will be done in the plugin but you will be able to deactivate it for flying/noclip simulation. Player health, ammo count etc. are all done in the game, so no limitations there! I'm not yet 100% sure about the AI, I'd like to let the user write his own but I also want offer a default behaviour maybe, because writing the AI is not exactly easy.
Hope this answers some questions and I'm glad this is of interest to people!
this is really great! So many things can be done with this. (hmm... if this could be combined with the Inet plugin=))
just another question: will it be possible to make doors or move objects (like in Wolfenstein)?
Quote from: Lt. Smash on Sat 03/01/2009 13:37:04
just another question: will it be possible to make doors or move objects (like in Wolfenstein)?
Walls are not fixed, so they can be moved/rotated etc. dynamically. Now, I don't know quite how much wall animation I will implement (again, it does make stuff difficult, especially for the editor and the map file format) but doors that move up or slide open are definitely going to be in there!
Anyways, here is a quick shot of the editor to give you guys more of an impression as to how levels work:
(http://i8.photobucket.com/albums/a7/dkh2/editor_screenshot.png)
Red lines are walls (duh), gray is the grid (remember, it can be turned off for completely free drawing of walls or entities, and it can also have different sizes), the dots are the player starting location and several objects (tables in this case, I believe). Textures are not yet selectable from the editor, working on that. For the video, I just opened the map file and added the texture flag (what texture to use for this wall) myself (that's why the map in the video isn't textured very well)...
Downloading wise..is there a link for that plugin?
Seriously I wasn't expect less from the man that brought the AGS Pong. Well, we're gonna see a thread like : Yes, you can make FPS with AGS fools-See inside for more info.
Quote from: dkh on Sat 03/01/2009 01:18:12
Any feedback, you think you could use this in a game?
Sweet zombie Reagan, dkh! Are you joking? I would create a game just to use this plugin. This makes my "Duck Hunt" shooter code look soul crushingly pathetic. I can't even face myself in the mirror now, knowing that this exists for AGS.
How the hell did you get from AGS Pong to this? Simply amazing.
- Ponch
Looks Great, reminds me of Doom Builder, which is a program I have used many times.
Quotethe plugin is really just for the rendering of the 3d-stuff, all weapon code for example is in the game itself
It's like... the Doomguy and Duke Nukem had a tea party, drinking out of blue mugs.
Sounds all uber-great. Ribcages of luck, sire!
QuoteAlready does. The controls in the video you can see work exactly like in all modern-day fps on the pc. WASD for moving/strafing, mouse to aim (horizontally and vertically), etc.
Hell yeah! I thought I saw some slight vertical movement in the video, but it was so slight that I was unsure whether it was mouselooking or not. This is great!
QuoteSo, to summarize, any game any user creates with the plugin can have any number of weapons which can all work completely different - it does not depend on the plugin.
This is a very good thing ;D
QuoteCollision detection between the walls and objects and enemies will be done in the plugin but you will be able to deactivate it for flying/noclip simulation.
Does this include collision of bullets with enemies? Or is this just done with a function similar to an interact mouse mode whilst the crosshair is over the character?
QuoteI'm not yet 100% sure about the AI, I'd like to let the user write his own but I also want offer a default behaviour maybe, because writing the AI is not exactly easy.
I'm guessing I'd probably have a pretty hard time writing AI, so if you could include default behaviour, that'd be quite excellent!
The map editor looks nice and simple to use - great work!
Awesome stuff Jan! Wasn't expecting that but the video looks great! Santa Claus Down 2 will be awesome thanks to you!!! :P It could be very interesting to see what people do with it, especially as it will effectively be the first time people can make 3D adventures for free, without ****ing watermarks... so HOORAY FOR YOU!!!!
Brilliant work DKH. When did the idea of making an FPS system out of AGS spawn in your head? I find my brilliant moments come in the early hours of the morning.
This is cool. Major cool, man.
Cheers,
Sparx.
This is great work, I'm definitely going to have a look into plugin coding myself now.
One question though: am I correct that the raycasting works on a 2D basis, like in Doom? I.e. you can't really look up and down, just raise or lower the "camera"?
Thanks everyone! ;D
QuoteDownloading wise..is there a link for that plugin?
It's not done yet. I will release it bundled with a game (and release its source as well).
QuoteDoes this include collision of bullets with enemies?
Ah, this is not in the current version of the plugin (had it in an earlier version though) - but I see two ways right now: leaving it to the user to write in the game or allowing the user to select pre-written ways such as a simple hit-scan, support for projectiles and splash damage.
QuoteOne question though: am I correct that the raycasting works on a 2D basis, like in Doom? I.e. you can't really look up and down, just raise or lower the "camera"?
Yep, but looking up and down is possible by moving the horizon up and down. This is not a correct way, it distorts the more you do it but it's barely noticeable. This is called y-shearing, I believe. In addition, moving the camera up and down is perfectly possible to simulate jumping/crouching as you said.
Whoa. That's... BEYOND incredible. If you can make a fully-fledged shooter out of this, you can already make some room for at least the Best Scripting and Best Innovation AGS Awards.
Quote
It's not done yet. I will release it bundled with a game (and release its source as well).
And how long do one need to wait to get it?
Stupid question, I know, but I'm so thrilled about this! Soon, the A will stand foor AllGameStudio :=
It's done when it's done! :P
But I will swear that I release this. Even if I happen to lose motivation or whatever, I will release what I have. So you can rest assured that you will definitely get SOMETHING! :)
Thanks for the heads up, everybody. Today I fixed some texture stuff (the plugin now allows textures to be all sizes up to 256x256, they don't even have to a power of two dimension - and they can be mixed, a level could use 32x32 textures on some walls and 128x128 on others, etc) and I fixed the enemy waypoint system. So, now you can add enemies and waypoints for all enemies in the map editor - they'll loop through these and patrol, when they see the player they'll engage in a fight, try to come closer etc. Now I'm working on animations for enemies.
Quote from: dkh on Mon 05/01/2009 19:09:42
when it's done!
Hey now! Watch it with that Duke Nukem Forever talk, buddy. I was starting to get my hopes up about this plugin. ;)
- Ponch
How on earth did you create an FPS game in a point 'n' click adventure creator!? Amazing!
Awesome stuff. I can't wait for the plugin and whatever you have. I'd love to make a 3D shooter. I even have a 3-year old story that I want to adapt. Once again, awesome stuff.
Just a note to say there is a free demo version of first-person shoot em up creator over at FPS Creator (http://www.fpscreator.com/). I use it and it's well worth buying it. ;)
Quote from: Nickydude on Wed 07/01/2009 07:03:38
Just a note to say there is a free demo version of first-person shoot em up creator over at FPS Creator (http://www.fpscreator.com/). I use it and it's well worth buying it. ;)
Blasphemy!
Nice job you have here.
I had a similiar "project" some months ago. I was going to make the most awesomenest adventure game with minigames and a sequence with raycasting would have been a part of it. Ofcourse I failed and only got this far (http://bantza.raah.fi/junk/agswolf.zip) in a week. It was fun doing something wacky and something that AGS was totally not made for.
Have you thought about floor and ceiling textures? I came to the conclusion that prepixel method would be too slow and then had another bloat method in mind, but couldn't think it through enough to make it work.
Quote from: zabnat on Thu 08/01/2009 16:45:21
Nice job you have here.
I had a similiar "project" some months ago. I was going to make the most awesomenest adventure game with minigames and a sequence with raycasting would have been a part of it. Ofcourse I failed and only got this far (http://bantza.raah.fi/junk/agswolf.zip) in a week. It was fun doing something wacky and something that AGS was totally not made for.
Have you thought about floor and ceiling textures? I came to the conclusion that prepixel method would be too slow and then had another bloat method in mind, but couldn't think it through enough to make it work.
Impressive... without even using a plugin! Handshake zabnat, really...
Quote from: Nickydude on Wed 07/01/2009 07:03:38
Just a note to say there is a free demo version of first-person shoot em up creator over at FPS Creator (http://www.fpscreator.com/). I use it and it's well worth buying it. ;)
I bought that program a few years ago. It was kind of tough creating levels though, but that is probably just me.
Wow, this is pretty cool!
Did you consider just using one of the doom source ports instead of writing it all from scratch? Or using the doom level format? That way you (and your users) could leverage the great editors that have already been written.
Great work!
The problem I found with FPS creator is res. I'm more than happy to play a first person shoot em up in low res but it doesn't support it. In fact, not even 640x480 if I remember rightly, leading to sluggish results.
That's why Jan's plugin thing is very appealing, finally some smooth running 3D, even if it is "fake" :D
This has so, so so much potential for AGS. Not just for 2.5D shooters, but adventure games, too. I can imagine towns being navigated by this method, or dungeons (for RPGs), or anything that requires a 360 view. Makes me think of Normality and Realms of the Haunting, too. I applaud you for making this happen in AGS of all things - this is fantastic! Thank you!
Though, a couple of questions.
Are the NPCs/enemies in this plugin handled seperately to AGS characters? If not, could you potentially use standard interactions with them or make them run different AI functions (on collision - initiate the dialogue system, or drop an item somewhere, or even do an animation at a certain waypoint?)
Could you potentially script preset camera events? (example: player enters a large courtyard. The "camera"/Viewport zooms forward away from the player's position and round a corner, where it focuses on two NPCs having a conversation, then turns back to the player's position)
It's still fantastically awesome even if it will never do any of those things, though x3
Once again, thank you.
Scavenger, you are aware of SteveMcCrea's 3D module/plugin (http://www.adventuregamestudio.co.uk/yabb/index.php?topic=29419.0), right? I would think that much more suitable for basing an adventure interface on, integrating well with AGS script/events. It supports true looking up/down, plus you can build quite sophisticated architecture. Oh, and it allows camera scripting too.
What makes dkh's module unique is in my opinion its focus on FPS style gameplay promising built in AI, handling of projectile interactions plus an easy to use level editor.
Quote from: GarageGothic on Sat 17/01/2009 12:49:33
Scavenger, you are aware of SteveMcCrea's 3D module/plugin (http://www.adventuregamestudio.co.uk/yabb/index.php?topic=29419.0), right? I would think that much more suitable for basing an adventure interface on, integrating well with AGS script/events. It supports true looking up/down, plus you can build quite sophisticated architecture. Oh, and it allows camera scripting too.
What makes dkh's module unique is in my opinion its focus on FPS style gameplay promising built in AI, handling of projectile interactions plus an easy to use level editor.
I am aware, yes. But 2.5D level editing - and design - is a lot more economical to create games with, and personally I prefer it*. But - even with that in mind, being able to use what I mentioned
in an FPS would bring a new level of depth into those kinda games, too. After all, what's better for immersion than having more than one layer of gameplay? With customisable AI, you can have enemies that run away at low health, or try to kamikaze you, or rush up and attack with a melee weapon.
Yes, with this plugin you get to shoot enemies, but then you can make games that are more than that. Being able to use it only for Wolfenstein 3D style shooters seems somewhat limiting. 2.5D first person rendering, projectiles, and enemy AI is only one aspect of a good FPS ;)
Think of the potential it could have for everyone, including the people who want to make shooty FPSes! The more that's hardcoded, the less potential it will have for everyone.
*Aesthetically, I mean, It's like preferring making 320x200 256 colour games to 32bit 3D games in whatever resolution. Y shearing, no problem. There's just something endearing about the way it's rendered.
So what's up with this engine? There'snt anything to download? :)
I PMed dkh about this and he said that he is going to finish this soon, but it's not ready yet.
I think we're all waiting on this ;)
Also, FPSCreator is shit due to the lack of low res support.
Quote from: Ponch on Mon 05/01/2009 19:48:07
Quote from: dkh on Mon 05/01/2009 19:09:42
when it's done!
Hey now! Watch it with that Duke Nukem Forever talk, buddy. I was starting to get my hopes up about this plugin. ;)
- Ponch
I was too (especially the look at the source :P), but then the topic started to get ignored...
I hope you're still working on it, this is an epic plugin, definitely one to keep around :D
News on this (good news) are imminent (hope that's the right spelling). Working very hard every chance I get between University and other projects.
Just to bring this back to the forefront. What's the statis on this? Finished? On hold?
Nice to see more interest in this. Status is still:
QuoteNews on this (good news) are imminent (hope that's the right spelling). Working very hard every chance I get between University and other projects.
It's getting very close though, I really want to release as soon as possible so keep your eyes peeled!
just a question: recently a game was released that used TCP/IP PLUGIN by a-v-o (http://www.adventuregamestudio.co.uk/yabb/index.php?topic=41451.0). You siad that this is going to be a deathmatch game. Any chance of using this?
Quote from: Guyserman82 on Wed 18/08/2010 00:18:30
just a question: recently a game was released that used TCP/IP PLUGIN by a-v-o (http://www.adventuregamestudio.co.uk/yabb/index.php?topic=41451.0). You siad that this is going to be a deathmatch game. Any chance of using this?
I'd be more than happy to help DKH use this (if he needs help, which I doubt but anyhow), but I totally think the game would be unplayable using this plugin.
The processing is very big even for simple actions (movement tracing). Unless of course it was all about the host (hamachi), but I've played UT via it, and the lag was less than the one we all got with this test game. The plugin can be used very nicely and with not much pestering lag, on turn-based games, or games of equal speed.
Text is processed very fast (at least it seems as though), but not the same thing happens with coordinates. I will be conducting some more tests though to see if there's a workaround or something amiss.
I would imagine this project is shelved simply because the author released *real* 3d in the form of a plugin
Hey guys, sorry for the delay.
First of all, it's absolutely possible to combine any of my plugins with the TCP/IP stuff as my 3d plugins simply change the graphics part of AGS so to speak, nothing else.
I haven't tested the multiplayer stuff myself so I can't say anything else about it.
I also don't know if I'll be able to fix up and release this plugin as, as Calin said, my priority is and was the "real" 3d plugin - ie. Razerblade 3d.