Hi !
Featured games (85)
games approved by the League of Dukes
Games in Showcase (623)
Games in Android Showcase (176)
games submitted by our members
Games in WIP (676)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  2D Raycasting and Lighting  (Read 1918 times)
0 Members and 1 Guest are viewing this topic.
Offline bcsharp

Senior Newbie

Exp: 6 years

« Posted 2014-01-07 22:19:13 »

Hello, I am wondering how I could implement 2D ray-casting in a Slick2D game, for lighting purposes. I realize that Slick2D is somewhat dead but that is irrelevant to ray-casting, as far as I know.

The "map" would consist of either rectangles or line segments.

I've read the article at but I can't seem to figure out how this is implemented in Java.

My best guess is to have a Ray class and a Line class and determine where intersections lie, and then create triangles from those points. Also, on a slightly irrelevant note, I have not learned how to create radial gradients in Slick2D, any help there would be appreciated too. I'm also wondering if efficiency would be an issue in a situation where there are a large number of lines. I hope my question makes sense.  Undecided

One other question: how would I combine the lights from multiple sources? I'm thinking additive blending or perhaps transparency would be the solution.

Any help would be appreciated!

Offline Varkas
« Reply #1 - Posted 2014-01-07 23:45:40 »

Once I've implemented the following method:

Take the octant aligned to the positive x-axis and the y-axis with (y < x). Scan it left to right. Keep track of shadowed intervals. Merge overlapping shadow intervals.


Now use affine transforms to map the other 7 octants on the first one, and you can do a full field of view calculation.

if (error) throw new Brick(); // Blog (german):
Offline Varkas
« Reply #2 - Posted 2014-01-08 11:29:31 »

You can find my code here:

Ready to use, but it assumes a grid-based map. The algorithm is fairly easy to extend for other map types, though.

if (error) throw new Brick(); // Blog (german):
Pages: [1]
  ignore  |  Print  
You cannot reply to this message, because it is very, very old.

basil_ (41 views)
2015-09-30 17:04:40

shadowstryker (21 views)
2015-09-29 15:55:06

TheSpaceHedgehog (27 views)
2015-09-29 01:58:48

GamerC4 (50 views)
2015-09-24 21:10:38

GamerC4 (69 views)
2015-09-24 21:09:48

htuy (24 views)
2015-09-24 04:57:24

htuy (34 views)
2015-09-24 04:56:35

htuy (25 views)
2015-09-24 04:56:09

htuy (25 views)
2015-09-24 04:47:33

Roquen (63 views)
2015-09-21 12:54:28
Math: Inequality properties
by Roquen
2015-10-01 13:30:46

Math: Inequality properties
by Roquen
2015-09-30 16:06:05

HotSpot Options
by Roquen
2015-08-29 11:33:11

Rendering resources
by Roquen
2015-08-17 12:42:29

Rendering resources
by Roquen
2015-08-17 09:36:56

Rendering resources
by Roquen
2015-08-13 07:40:51

Networking Resources
by Roquen
2015-08-13 07:40:43

List of Learning Resources
by gouessej
2015-07-09 11:29:36 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!