Hi Jasoco,
Did you implemented doors? I'm not fan of doors as I said before, but I've been reading a couple of articles about and it doesn't seem to be trivial. Please let us know!!!!
I'm kind of upset of not being able to do floor casting without using dynamic quads... don't get me wrong, I think your implementation is fantastic and I too should use whatever technology is available , the problem for me is that it is not "portable"... but anyway.. I was playing with floor casting until I realized that I coded a simple 3d to 2d projection code, and then I remembered an old game that is fantastic "The Colony" (1987-Macintosh). So instead of trying to make the floorcasting work, I dropped all my raycasting code and made this:
I can't use textures (without using canvas+dynamic quads ), but it was fun to implement
Best regards
Working Raycasting example! WolfenLöve 3D if you will...
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
- Jasoco
- Inner party member
- Posts: 3727
- Joined: Mon Jun 22, 2009 9:35 am
- Location: Pennsylvania, USA
- Contact:
Re: Working Raycasting example! WolfenLöve 3D if you will...
Daaaaaaaamn. I loved watching videos of The Colony on YouTune a while ago. It was actually what I was going to try and make at first if I was unable to do textures. You gotta share that code.jfroco wrote:Hi Jasoco,
Did you implemented doors? I'm not fan of doors as I said before, but I've been reading a couple of articles about and it doesn't seem to be trivial. Please let us know!!!!
I'm kind of upset of not being able to do floor casting without using dynamic quads... don't get me wrong, I think your implementation is fantastic and I too should use whatever technology is available , the problem for me is that it is not "portable"... but anyway.. I was playing with floor casting until I realized that I coded a simple 3d to 2d projection code, and then I remembered an old game that is fantastic "The Colony" (1987-Macintosh). So instead of trying to make the floorcasting work, I dropped all my raycasting code and made this:
[youtube]kyeZ4nMkNtU[youtube]
I can't use textures (without using canvas+dynamic quads ), but it was fun to implement
Best regards
I'm still working on doors. I have a wireframe right now showing where the door would be, but I have to figure out how to draw it with images. I'm thinking it should be as easy as:
1) Take the side of the door you are looking at. i.e. Right or Left/Up or Down
2) Calculate the left and right most pixels on the screen where the door lies
3) Cast rays from the left to right pixels using the inset of the door as an offset, add each slice to the drawing pool as long as the slice is not covered up by the slice already existing at that point. (i.e. don't draw it if it's inside the wall. If the door is closed and not transparent, replace the slice that's already there, otherwise add a new one to draw in front.)
I just need to figure out the math to do the casting. I'll try taking the existing raycaster and make a secondary doorcaster function.
Experimenting will be fun. Right now I have a wireframe and working open/close functionality.
I would love to not have to rely on canvases and wish they weren't so unportable, but there's really no other way to do this with speed without Löve having the ability to Distort images and quads like you can in PhotoShop. It's really the only thing keeping us from being able to make realistic 3D. As I have shown before, I can totally calculate 3D, but if I could also distort images to any shape by moving the four corners independently you wouldn't have to use solid polygons and I wouldn't need to use raycasting to draw the 3D view as an array of 1 pixel strips. It would probably be faster because, say I have a view and you can see 10 wall tiles from your perspective, it would only require 10 draw calls and transform calls instead of 320 or 640 of them across the screen. For the floor I would simply need to add visible floor tiles to a table as my rays are passing through them and then draw only the ones you can see using the same distort feature. Basically we need access to some more modern image manipulation features. Yeah, I know, I know, "Löve2D", but really, it doesn't have to be 100% 2D if we are provided the right tools. (Although, then I wouldn't be able to do depth shading on the floor or walls at a per pixel basis. Nor could I do proper z-ordering of objects and wall slices unless we had actual texture clipping like normal 3D engines.)
But I'm getting off-topic. A game like DOOM could be totally possible with a little work. The main difference between how Wolfenstein worked and DOOM worked is Wolfenstein's walls are all on a grid. Whereas DOOM's could be anywhere. So in order to do it, DOOM had to create a lookup table of every sector that could be seen from every other sector so the engine wouldn't have to do as many calculations on sectors that aren't even visible. The fun part would be creating the BSP generator.
I do have plans on adding some other features like maybe simple sloped walls and higher floors and lower ceilings if I can figure out the best way to do it. (Which would probably consist of making separate Floor/Ceiling inner and outer canvases for each height level. I'd be afraid I'll reach the limit of most graphic cards this way though.)
This is a WIP and will probably be for a while, but hopefully it's a fun ride. The use of LuaJIT made it much more fun though since it's now faster. I just fear I will be building something too powerful for many computers, even ones with high-end components. So I can't wait to open it up to the public here officially to get peoples testing and help and input.
Last edited by Jasoco on Thu Feb 02, 2012 8:10 am, edited 1 time in total.
Re: Working Raycasting example! WolfenLöve 3D if you will...
Hi Jasoco,
It's fun... it seems that we are working most of the time in the same thing.s
I was reading about affine transformationes in order to simulate projection...
I read this post about implementing shear/skew using rotation/scaling: viewtopic.php?f=4&t=2267
And this interesting image from Wikipedia:
And implemented this (using two triangles per floor tile + affine transformations):
It's not 100% accurate but with one-color tiles it looks very similar and with textures doesn't look that bad.
Any news about your doors?
Best regards
It's fun... it seems that we are working most of the time in the same thing.s
I was reading about affine transformationes in order to simulate projection...
I read this post about implementing shear/skew using rotation/scaling: viewtopic.php?f=4&t=2267
And this interesting image from Wikipedia:
And implemented this (using two triangles per floor tile + affine transformations):
It's not 100% accurate but with one-color tiles it looks very similar and with textures doesn't look that bad.
Any news about your doors?
Best regards
- legendman3
- Citizen
- Posts: 68
- Joined: Sun Jan 22, 2012 8:29 pm
Re: Working Raycasting example?
Im missing something, where is the 0.8.0 download?Jasoco wrote:You have 0.8.0, right?
- slime
- Solid Snayke
- Posts: 3166
- Joined: Mon Aug 23, 2010 6:45 am
- Location: Nova Scotia, Canada
- Contact:
Re: Working Raycasting example?
Windows: The latest build here https://love2d.org/builds/ (or a LuaJIT build at http://dl.dropbox.com/u/4214717/LoveJIT-0.8.0-win32.zip )legendman3 wrote:Im missing something, where is the 0.8.0 download?Jasoco wrote:You have 0.8.0, right?
Mac OS 10.7: http://dl.dropbox.com/u/4214717/love-0.8.0.zip
I haven't been following the conversations very well, but you guys know love.graphics.draw has shear parameters in 0.8.0 right? Unless you're already using that and I'm being dumb.
- legendman3
- Citizen
- Posts: 68
- Joined: Sun Jan 22, 2012 8:29 pm
Re: Working Raycasting example?
Ok one more question, whats luaJIT?slime wrote:Windows: The latest build here https://love2d.org/builds/ (or a LuaJIT build at http://dl.dropbox.com/u/4214717/LoveJIT-0.8.0-win32.zip )legendman3 wrote:Im missing something, where is the 0.8.0 download?Jasoco wrote:You have 0.8.0, right?
Mac OS 10.7: http://dl.dropbox.com/u/4214717/love-0.8.0.zip
I haven't been following the conversations very well, but you guys know love.graphics.draw has shear parameters in 0.8.0 right? Unless you're already using that and I'm being dumb.
Re: Working Raycasting example?
Hi slime,slime wrote:
I haven't been following the conversations very well, but you guys know love.graphics.draw has shear parameters in 0.8.0 right? Unless you're already using that and I'm being dumb.
Nope, I didn't know.... but sounds great!!! Thank you for the inforamtion. I'm using 0.7.2. When will 0.8.0 be released?
Best regards
- Jasoco
- Inner party member
- Posts: 3727
- Joined: Mon Jun 22, 2009 9:35 am
- Location: Pennsylvania, USA
- Contact:
Re: Working Raycasting example?
You're going to have to explain and show me some examples because I so want to play with this now.slime wrote:I haven't been following the conversations very well, but you guys know love.graphics.draw has shear parameters in 0.8.0 right? Unless you're already using that and I'm being dumb.
And no, doors are still escaping me. I need to sit down and think straight to get it right.
Re: Working Raycasting example?
jfroco, that demo looks awesome. All these demos look awesome. Coolest thing since Jasoco's Star Fox demo.
(You really should search before you ask, though.)
LuaJIT an alternative Lua interpreter written from scratch that uses special techniques (Just-in-time compilation, hence "JIT") to make certain tasks perform very quickly.legendman3 wrote:Ok one more question, whats luaJIT?
(You really should search before you ask, though.)
- Jasoco
- Inner party member
- Posts: 3727
- Joined: Mon Jun 22, 2009 9:35 am
- Location: Pennsylvania, USA
- Contact:
Re: Working Raycasting example?
One of these days I am going to resurrect that and create an optimized working engine. Complete with retro looking SNES style resolution and graphics. Going to be awesome to the max. One of these days. Should be easier to design when I put all the knowledge I've gained since then to use.hryx wrote:jfroco, that demo looks awesome. All these demos look awesome. Coolest thing since Jasoco's Star Fox demo.
Edit: This topic continued into another thread. When I release the alpha/beta/whatever of the engine for download, I will start a new topic anyway. For now, this..
viewtopic.php?f=4&t=7800&start=10#p48535
Who is online
Users browsing this forum: Ahrefs [Bot] and 14 guests