EOB GDI+ engine done!

EFileTahi-A

Well-known member
Joined
Aug 8, 2004
Messages
539
Location
Portugal / Barreiro
Ok, Ive finished the GDI+ replic of a graphic engine simulating the old Eye of The Beholder game! I will just kill the final bugs and add some wall variations to make it look nicier, before uploading the project.

Ill upload the program today (22-01-2006).

Note, the grapics were created by me using Cinema 4D, thus, THEY ARE legal.

Screenshot
931fa9f8cac842b90de3c87903ce526a.jpg
 
Last edited by a moderator:
Previously I opened a thread on how to create an EOB engine and, some ppl stated that it would be better to use recent technology such as DirectX to develop an EOB like graphic engine because it would be simplier. Well I believe that using plain GDI+ to draw images is simplier then setting up a 3D environment and EOB Replica prooves this. I started this project Friday (two days ago) and I finished it sunday afternoon (including the raytraced graphics). So I guess it was simple to acomplish ;)


Use the following keys to move around the dungeon:

8 = move forward
5 = move backwords
4 = step left
6 = step right
7 = turn 90
 

Attachments

Last edited by a moderator:
I didnt play the game, but Im gonna share my opinion of what I can see here and in the one RAR I downloaded. I certainly would have tried for a more compact approach, but regardless of filesize, it certainly looks good.

If this is were to be distributed on CD the file size wouldnt be a problem. Over the internet, though, there are at least two simple thing you could do (maybe you were going to anyways): One thing would be to use a compressed image format: GIF or PNG. Also, reduce the amount of "wasted space" in your images (although GIF or PNG would minimize the impact of this "wasted space"). Crop only the used rectangle in the image, removing large regions that consist only of your transparency key. When you draw the image, draw it at a specified offset. This would be a relatively small effort to drastically reduce the physical size of your images, resulting in faster GDI+ rendering, and depending on format used, you may get drastically smaller files too.
 
One thing would be to use a compressed image format: GIF or PNG. Also, reduce the amount of "wasted space" in your images (although GIF or PNG would minimize the impact of this "wasted space"). Crop only the used rectangle in the image, removing large regions that consist only of your transparency key.

When you draw the image, draw it at a specified offset. This would be a relatively small effort to drastically reduce the physical size of your images, resulting in faster GDI+ rendering, and depending on format used, you may get drastically smaller files too.

About file formats:
I just used BMPs because I did not wanted to convert them one by one, yet I was not sure if MakeTransparent prop would work with such formats as it did not worked with Tif format. I work with images for too long. I know whats best for compression/Quality. But thanks for the tips :)

About croping images:
The BMPs are compressed. They are in BMP with "Run Length Enconde" which basicly discars all the "blue color" region (wasted space). For instance compare these two pictures:
001_BaseWall_y0_x1.bmp (182x600) size: 112Kb
001_BaseWall_y0_x2.bmp (900X600) size: 114kb

I also used some cropped images to see if GDI+ would finish the loop faster but, it seems it had no effect on performance.

If you try to convert the two above pictures for PNG (for example) they will differ only about 3kb in size from each other (like 86kb to 89kb)... Take also in consideration that the pictures are all in 8bit (256 colors). THIS is what really reduces the size. Without "Run Length Enconde" and color decrease they were originally about 1.5MB each one. Not even PNG could lower them bellow 200kb;

About image scaling:
I know that small images = better performance, but I made them big to see how good could GDI+ handle such sizes in performance matters that is.

All in all thaks for the post Marble :)
 
Last edited by a moderator:
My bad. On the whole, I guess I was wrong.

I didnt check the BMP for compression, but you are right, the RLE compression is a big space saver. I will mention, though, that you cetainly could use a lower bit depth than 8 bpp. Specifically, using Photoshop, I saved an image as a 4 bpp GIF with no visible quality loss, reducing it from about 100 k to about 50 k. It is also worth mentioning that the GIF format has built in transparency, saving you an intermediate step (at run-time) of applying a transparency key. I was able to achieve similar results using a PNG. With Adobe Photoshop CS you could probably get even smaller files with a PNG than I did (despite common misconceptions, PNGs compress smaller than GIFs of comperable quality, but Adobe Photoshop versions prior to CS have substandard PNG compression).

I know I tend to offer a lot of criticism, but I do so strictly for the purpose of being helpful and informative. Clearly you did put a reasonable amount of thought into filesize, and the end product already looks pretty good. I just wanted to give you some tips to help out.
 
Hey marble, I thank you again for your post. And, Im glad there are persons here like you who are willing to help.

About image bit reduction:
I wanted to convet the pictures to 6/5 bit (64/32 colors) but Paint Shop Pro cannot handle such color depth. In fact I dont know if this can be done in BMP format. On Amiga OS I could convert the pictures from 8 to 7,6,5,4,3,2 and 1 bit color depth using amiga standard format IFF/ILBM. Anyway, PNG and GIF does seem to support such bit color depth.

Say, did you tryed the program?
 
Last edited by a moderator:
Well I downloaded it but unfortunately it crashed.

Error on function: LoadMapImages()
Message: cannot be less than zero
Parameter name: length

followed by

Error on function DrawGraphics(Form frm)
Message: Object reference not set to an instance of an object
 
This is a list of the files

Graphics
====
001_BaseWall_y0_x1.bmp
001_BaseWall_y0_x2.bmp
001_BaseWall_y1_x0.bmp
001_BaseWall_y1_x1.bmp
001_BaseWall_y1_x2.bmp
001_BaseWall_y2_x0.bmp
001_BaseWall_y2_x1.bmp
001_BaseWall_y2_x2.bmp
001_BaseWall_y2_x3.bmp
001_BaseWall_y2_x4.bmp
001_BaseWall_y3_x0.bmp
001_BaseWall_y3_x1.bmp
001_BaseWall_y3_x2.bmp
001_BaseWall_y3_x3.bmp
001_BaseWall_y3_x4.bmp
001_BaseWall_y4_x0.bmp
001_BaseWall_y4_x1.bmp
001_BaseWall_y4_x2.bmp
001_BaseWall_y4_x3.bmp
001_BaseWall_y4_x4.bmp
001_BaseWall_y4_x5.bmp
001_BaseWall_y4_x6.bmp
001_BaseWall_y5_x0.bmp
001_BaseWall_y5_x1.bmp
001_BaseWall_y5_x2.bmp
001_BaseWall_y5_x3.bmp
001_BaseWall_y5_x4.bmp
001_BaseWall_y5_x5.bmp
001_BaseWall_y5_x6.bmp
002_BaseWall_y0_x1.bmp
002_BaseWall_y0_x2.bmp
002_BaseWall_y1_x0.bmp
002_BaseWall_y1_x1.bmp
002_BaseWall_y1_x2.bmp
002_BaseWall_y2_x0.bmp
002_BaseWall_y2_x1.bmp
002_BaseWall_y2_x2.bmp
002_BaseWall_y2_x3.bmp
002_BaseWall_y2_x4.bmp
002_BaseWall_y3_x0.bmp
002_BaseWall_y3_x1.bmp
002_BaseWall_y3_x2.bmp
002_BaseWall_y3_x3.bmp
002_BaseWall_y3_x4.bmp
002_BaseWall_y4_x0.bmp
002_BaseWall_y4_x1.bmp
002_BaseWall_y4_x2.bmp
002_BaseWall_y4_x3.bmp
002_BaseWall_y4_x4.bmp
002_BaseWall_y4_x5.bmp
002_BaseWall_y4_x6.bmp
002_BaseWall_y5_x0.bmp
002_BaseWall_y5_x1.bmp
002_BaseWall_y5_x2.bmp
002_BaseWall_y5_x3.bmp
002_BaseWall_y5_x4.bmp
002_BaseWall_y5_x5.bmp
002_BaseWall_y5_x6.bmp
003_IronBars_y1_x0.bmp
003_IronBars_y1_x1.bmp
003_IronBars_y1_x2.bmp
003_IronBars_y2_x0.bmp
003_IronBars_y2_x2.bmp
003_IronBars_y2_x3.bmp
003_IronBars_y3_x0.bmp
003_IronBars_y3_x1.bmp
003_IronBars_y3_x2.bmp
003_IronBars_y3_x3.bmp
003_IronBars_y3_x4.bmp
003_IronBars_y4_x0.bmp
003_IronBars_y4_x1.bmp
003_IronBars_y4_x2.bmp
003_IronBars_y4_x3.bmp
003_IronBars_y4_x4.bmp
003_IronBars_y4_x5.bmp
003_IronBars_y4_x6.bmp
003_IronBars_y5_x0.bmp
003_IronBars_y5_x1.bmp
003_IronBars_y5_x2.bmp
003_IronBars_y5_x3.bmp
003_IronBars_y5_x4.bmp
003_IronBars_y5_x5.bmp
003_IronBars_y5_x6.bmp

Graphics\FloorAndCelling_NS
====
FloorCelling_N_S_1.bmp
FloorCelling_N_S_2.bmp

FloorAndCelling_WE
====
FloorCelling_W_E_1.bmp
FloorCelling_W_E_2.bmp
 
I just tried running it without extracting, which curiosly worked. Seems like quite a nice engine. I only ever played EoB for a very short time on the Amiga but it seems very similar (if slightly better graphics) :).
 
Ahhh great. So it did worked. :)

Thks Cags. Say cags, Im gathering a party to create an EOB game. Already have a person (who recently managed to edit a book of his) to write me a story, game rules and game maps. Would you like to participate in such project?

Ill describe the project details if you show any interest on this.
 
Hmm... maybe I played EoB on the wrong system. The versions I played had much worse graphics than that screen shot up top.

Ill see how the graphics are in play tonite :)
 
I got a chance to run it.

Youre duplicating files in the different zip files. I had to overrwrite files that already existed. Not a problem, just that size of download(s) came up earlier.

Im windows 2000 2.2HGz laptop, 2gb ram, 80mb 7200rpm hard drive which is currently downloading a ton of huge files.

I ran it compiled. The form came up fast, the loading of the maze took 5 seconds to download. Looks awesome.

My only "gameplay" complaint is that since Im on a laptop, I dont have a numpad. I expect this sort of thing to be handled by the arrows, mouse or user defined. Understood its a display engine test.

My advice here is first and foremost to loose the Eye of the Beholder schtick. Its a copywrite owned by Hasbro (through Wizards of the Coast) and thats a very large company. Maybe one of the larger companies to hold IP stake over video games, save movie tie-in games.

Eye of the Beholder wasnt the first first-person dungeon crawl and wasnt the last. There are dozens if not hundreds of them all in very similar styles. Wizardry is by far more popular of the same style of game. And TSR (the company who owned the IP to this game origionally) had put out numerous other RPGs in the same style as well.

Since youre using different RPG mechanics and a different storyline, you dont want something potentially lawsuit enducing on your software.

As far as the game goes, I cant say enough that this dungeon is by far the best looking Ive seen - including Wizardry 8 which is the newest and best looking first person RPG Ive seen.

But youll need variety. Just in the dungeon itself. Looking at the same tiles will get old. This demo also evoked my hatred for this sort of game if done improperly. Its so easy to get lost if there is no variation in the tiles.

Honestly I much prefer an overhead (top down) or isometric type of RPG for many of these reasons, though Ill continue to test and give ideas/advice on this project.
 
Last edited by a moderator:
Thank you for the post and for trying it out Denaes.
My only "gameplay" complaint is that since Im on a laptop, I dont have a numpad. I expect this sort of thing to be handled by the arrows, mouse or user defined. Understood its a display engine test.
I will add a new key config (Q,W,E,A,S,D) so that it can run properly on laptops.

Youre duplicating files in the different zip files. I had to overrwrite files that already existed. Not a problem, just that size of download(s) came up earlier.

About the duplicating images, thats odd, because I unpack them with no problem, yet, by examining the archives there are no duplications.

My advice here is first and foremost to loose the Eye of the Beholder schtick. Its a copywrite owned by Hasbro (through Wizards of the Coast) and thats a very large company. Maybe one of the larger companies to hold IP stake over video games, save movie tie-in games.

I will follow your advice and remove the EOB label from the program, just in case ;).

But youll need variety. Just in the dungeon itself. Looking at the same tiles will get old. This demo also evoked my hatred for this sort of game if done improperly. Its so easy to get lost if there is no variation in the tiles.

About wall variety, that is a must logicaly! Tons of walls variations will take place :). From cracked walls to dirty ones, from ornamented to simple ones etc...

As far as the game goes, I cant say enough that this dungeon is by far the best looking Ive seen - including Wizardry 8 which is the newest and best looking first person RPG Ive seen.

But remember that Wizardry 8 is realtime 3D. This one is Pre-rendered :)
 
EFileTahi-A said:
About the duplicating images, thats odd, because I unpack them with no problem, yet, by examining the archives there are no duplications.

Maybe it was just the way winRAR was unpacking the multiple files into the same directory. My bad. Sorry.

EFileTahi-A said:
About wall variety, that is a must logicaly! Tons of walls variations will take place :). From cracked walls to dirty ones, from ornamented to simple ones etc...

And floors :) campfires, wells, bones, roots, stone, bones, rags, blood... maybe some bones...

EFileTahi-A said:
But remember that Wizardry 8 is realtime 3D. This one is Pre-rendered :)

Didnt know that, but it makes sense. You could actually see opponents that wernt directly in front of you. I havnt played it for a while... hmmm... I dont think I ever beat that game. wow, the only Wizardry game I beat was the one for the Nintendo...

I feel like a failed gamer.
:eek:
 
Sorry Denaes, yesterday I was too tired to mess around with the programs code.

I will post the new version today, yet, it will include the DirectX version too :), which is 90% complete. 100% when I get home :)
 
Back
Top