New B3D-like Direct3D9/10 Engine

Community Forums/Showcase/New B3D-like Direct3D9/10 Engine

KimoTech(Posted 2006) [#1]
Hi everybody! I am making a new engine for B+, B3D and propertly BMax. It is based on the new Direct3D 10 Renderer using Win Vista, and can also do Direct3D 9. All new features from DX10 will be available in one or another form.
All the old B3D commands are used here.
LoadMesh, PositionEntity, CameraViewport, all of 'em.
Any comments? :-)

Link to screenshot:
http://gallery.artodata.dk/data/user/gallery/images/470/470dd079-178d-41da-9571-472293547ca1.jpg?opdateret=18-10-2006+00%3a26%3a00


Fuller(Posted 2006) [#2]
That's in BlitzPlus? (I can see the window title)
Seems like all the blitz languages do everthing now.


ckob(Posted 2006) [#3]
where can we download :)


GW(Posted 2006) [#4]
Will it require vista?


gburgess(Posted 2006) [#5]
The fact that it seems to use standard Blitz3D commands is a massive plus point.

Hurry up and finish it! I think you'll have plenty of customers if it's good. :)


puki(Posted 2006) [#6]
I will be most excited when it is released.


Boiled Sweets(Posted 2006) [#7]
How about an eraly beta or demo to show us


Ricky Smith(Posted 2006) [#8]
April Fools day - in October ?


DH(Posted 2006) [#9]
Yeah, I am waiting for this as well


Boiled Sweets(Posted 2006) [#10]
So basically this is a rival to B3D but using the same set of commands. I wonder now will this ever be finished? I doubt it.


Boiled Sweets(Posted 2006) [#11]
So basically this is a rival to B3D but using the same set of commands. I wonder now will this ever be finished? I doubt it.


gburgess(Posted 2006) [#12]
I don't think 'rival' is the word. Surely you have to buy Blitz3D to use this.


Dreamora(Posted 2006) [#13]
We will see how far it goes. It would be nice to have a rendering engine alternative but so far, none ever got finished because there are 2 things that normally break them:

Collision
Movie Support

We will see which one will end this project if any does.
Rendering is the easy part of wrapping the Blitz 3D commandset.


Boiled Sweets(Posted 2006) [#14]
Ah and let's have dynamic collision support please.


KimoTech(Posted 2006) [#15]
You don't need Blitz3D.. You just need BlitzPlus, or C++.. Lib's for both B+ and C++ will be released.. Maybe also for BlitzMAX.. ;) Development restarted because of an wierd bug that closed the app. after 5 min run.. Now the engine is based on the DXUT tool included with the latest DX9 SDK (GUI, automatic resolution setup etc.), but i'm fully working on the engine.. ;)


KimoTech(Posted 2006) [#16]
... will it require vista?
- No, DirectX 10 wil be released for XP in a few months
... Collision, and Movie support
- Collisions will be sphere-to-polygon and sphere-to-sphere.
Maybe sphere-to-box, not known yet..
- I think there will be DirectShow movie-support. If i'm right, i think that you can render the movie to a d3d-surface.


stayne(Posted 2006) [#17]
Development restarted because of an wierd bug that closed the app. after 5 min run


That's odd. Wouldn't a bug like that be relatively easy to spot if you coded everything?


Liberator(Posted 2006) [#18]
"Development restarted because of an wierd bug that closed the app. after 5 min run"

- AKA -

"I'm never going to finish this project!"

Tell us about this when it's done, not when it's a burning idea waiting to find an excuse to fail.


Naughty Alien(Posted 2006) [#19]
..hihiihiihi...


Grisu(Posted 2006) [#20]
A little bit too early for april the 1st if you ask me.


KimoTech(Posted 2006) [#21]
It's a little hard to spot such bugs, i only got four weeks of C++ experience.. But i'm still working on it.. Multiple cameras (viewports) works, meshes can be loaded, positioned, rotated and scaled.


Naughty Alien(Posted 2006) [#22]
..you have got 4 weeks of C++ experiance and going to create game engine??


Pete Carter(Posted 2006) [#23]
- No, DirectX 10 wil be released for XP in a few months


where did you hear that? Microsoft have stated there will be no direct X 10 for XP.


Boiled Sweets(Posted 2006) [#24]

you have got 4 weeks of C++ experiance and going to create game engine??



What alien said!!!


KimoTech(Posted 2006) [#25]
- DirectX 10 , i heard it from a friend..

- Yes about a month.. I studied the DirectX SDK, and started programming.. I don't find C++ so hard to learn, when you already know MUCH Blitz- or Visual Basic.. ;)
I'm only fifteen so maybe i am easier learning.. :D


DStastny(Posted 2006) [#26]
Not to burst Qimmers bubble, but a couple things.

1. There will be no Dx10 for XP. Your friend is clueless. Game developers will have to write two rendering pipelines for a while to come Dx9 and Dx10. The DXUT Lib takes care of alot of that for you in regards to setup Creating a Dx9 Context or Dx10 context based upon enviorment. Vista supports both for these reason. Dx10 is not backwards compatibile. It is entirely different architecture then Dx9. Dx9 supports fixed piplines Dx10 does not. Dx10 requires Unified Shaders Dx9 does not. There are no Dx10 cards currently available. End of the Month most likely.

2. The SDK DxUT Lib that you are wrapping, is a good starting point, however it wont work on anything but WinNT Kernal OS. Not that I think supporting Win9x is important but figured you might want to know that.

3. An engine requires more than just wrapping DXUT. Its just the basics, so you need to understand your 3d Math inside and out. How is your trig?


Now for advice, take your time, and dont even begin to estimate how long its going to take. You wrapped the libary and got some basic rendering going. Dont take offense thats not a big deal. And there are many talented programmers here that can do that. As for learning C++. There is good and bad programming in C++ whats good for VB or Blitz is more than likely very bad for C++. I have been programming various languages professionaly for over 25 years and can program in C++ but dont even remotely consider myself great at it. I know enough to get by.

Make sure you really learn the language and understand. This is probably the best book.

http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

Good luck on your start in programming, many of us were you a long time ago.

Doug Stastny


KimoTech(Posted 2006) [#27]
<i> If D3D9 is supported by Win9x, DXUT is too! DXUT is just a set of code, that makes it more stable, and easier to code the generally things (such like setting up the device).
I've also got good experiences in 3d maths like vectors and matrices. The entity system is almost finished, you know, children, parents, and that stuff..
But you're right with DX10.. But then i'll just split the engine up in two DLL's.. One for DX9 rendering, and one for DX10 rendering.. And for those who can use the engine in C++, there will also be a x64-build of the engine.
Some interest of some C++ code? :)


KimoTech(Posted 2006) [#28]
Engine source until now:
;)




Liberator(Posted 2006) [#29]
Swear to god your sig said you were 14 like a day ago. Happy birthday. Here's your gift: It's a clue - what you are setting out to do is a waste of time. Do something more productive.


KimoTech(Posted 2006) [#30]
I'll release an alpha demo of the engine soon as i finish the entity system, camera system, and lightening system.. ;)


DStastny(Posted 2006) [#31]
Qimmer, read the Doc on DXUT you are wrong.
It works on Unicode OS only. To support unicode on Win9x you must install seperate DLLs for Unicode support. So just becuase DXUT works with DX9 has nothing to do with OS. As you put it it is a piece of code... but code has dependencies, you need to be sure of them before you just start coding blindly.

Your code is not C++ its C. Thats what Extern "C" does.

Your entity math will fail with from Gimbal Lock. Google it you see what it is.

The big array of entities is kinda inefficent(I am being polite). You need to implement linked list or other more complex structure to deal with entities. Look at templates for better container management.

Keep learning... But you have a way to go. You just wrapped the SDK example in simple "C" DLL.

Doug Stastny


Banshee(Posted 2006) [#32]
Collisions will be sphere-to-polygon and sphere-to-sphere

Linepick or a simple intersection check between two points in space and an entity is the be all and end all of collision. I use nothing else, never have, and never will.

Anyway I applaud the effort, you show great ambition and some talent. What you dont have is a well rounded understanding of all things code, and this will ultimately cause your project to have a few innefficiencies or issues as it nears completion.

However, keep at it. Fail this time, or succeed poorly, whichever doesnt matter. The fact is doing this must be teaching you a hell of a lot, and once you've done something once doing it again becomes a whole lot easier. Within a few attempts you'll be suceeding well.

Your crash bug was probably a memory leak, a resource no longer used not being freed. Take some time to look into garbage collection, and do be sure to learn linked lists as arrays are very much too BASIC for this kind of work.


KimoTech(Posted 2006) [#33]
First, it doesn't matter if the engine can't run under Win 9x. How many uses this system anymore? Games like NFS Most Wanted and such also only runs under NT Kernel.. And that bug was because i had to use _stdcall instead of _cdecl.


DH(Posted 2006) [#34]
Ignore them Qimmer, honestly! Go for it bro, prove them wrong!

@Liberator get back in your cage!

Budman has some good points, worth taking into consideration.

I completely agree with Banshee.


KimoTech(Posted 2006) [#35]
For best performance, cam someone help me with a good entity system? I just need the code to handle the entities (like 'new Entity[1]; , PositionEntity, Parent/Child system) you know. Then i'll take care of the rest.. I don't have so good math skills yet.. And i don't really know how to handle the entity-variables.


(tu) sinu(Posted 2006) [#36]
why not checkout the blitz system that was coded for bmax that might help you with entity stuff.


Azathoth(Posted 2006) [#37]
You're forgetting 'break' in your switch/case so 'Windowed' always gets set to true, and 'case 2' does the exact thing 'default' does; you could probably do it with 'if' instead but this is what the switch/case should look like:

	switch (m)
	{
	case 1:
		Windowed = false;
		break;
	default:
		Windowed = true;
	}



tonyg(Posted 2006) [#38]
@Qimmer FYI, you might want to use the codebox rather than code tags for large amount of code.


Naughty Alien(Posted 2006) [#39]
..I like this kid..


KimoTech(Posted 2006) [#40]
why not checkout the blitz system that was coded for bmax that might help you with entity stuff.

Do you mean MiniB3D?


KimoTech(Posted 2007) [#41]
i fixed the gimbal lock! when using minib3d's matrix system, year the gimbal lock occurs when recieving the pitch yaw roll in the global coords.. but why not just add all the parents rotation angles to the local angle, then you got the global angle in degrees?


jfk EO-11110(Posted 2007) [#42]
I say hats off! I wish I was 14 again, or 18 or so, when every day had 72 hours. Good luck Qimmer, the world's out there to be conquered.


BlitzSupport(Posted 2007) [#43]
Yeah, ignore the nay-sayers and just do it.


Leo Santos(Posted 2007) [#44]
Totally agreed!
Qimmer, most of those guys are old and delusioned, so listen to what their experience has to say, but don't let them bring you down!

What you're doing is awesome. So, the engine is not perfect now? Big deal! You're 15, have all the time in the world!

Go ahead, rock on, take over the world!
Leo.


Naughty Alien(Posted 2007) [#45]
..son..do it,but dont fly to high becouse you can fall deep..now go and get it tiger :)


_33(Posted 2007) [#46]
When he'll be over with it, Direct X 12 will be out! And Blitz3D will already be DX9!!!


plash(Posted 2007) [#47]
Blitz3D will already be DX9!!!


I highly doubt that ...


_33(Posted 2007) [#48]
Without hope, you have death.

"A hopeless situation"


KimoTech(Posted 2007) [#49]
I've learned a lot since that screenshot i made for about 8 months ago .. I've almost only been developing C/C++ since, and now i know how to do:

- The entity-system, gimbal lock, parent/children etc.
- Shadowmapping
- Hardware-skinning for boned animations and anim.-blending
- a lot about HLSL shaders

... and more to come ..

I've started from scratch with my Nexus 3D Engine ...


Naughty Alien(Posted 2007) [#50]
..Im not going to spoil your enthusiasm, but am I asking much if I say I would like to see some screenshots??


KimoTech(Posted 2007) [#51]
.. as i said: i have learned a lot ...

And as the DirectX 10 buildt-in instancing functions, it is going to be easy to make hardware instancing, just using CopyEntity.

I know its nonsless, but as you asked for a screenshot, you can see one here: http://www.box.net/shared/cxi7pk1aif


KimoTech(Posted 2007) [#52]
I coded in 2 days now, but the reason why it doesnt look that much, is because the whole matrix, entity child/parent system etc. is coded now .. I just need to implement some drawing methods, then i'll post a screenshot again, and maybe a bit code as a proof on how long i am in progress.


_33(Posted 2007) [#53]
That looks like a blank screen to me.


KimoTech(Posted 2008) [#54]
Some of you ment that it would be impossible for me to develop a DX9/10 engine in an age of 15 right?
I've only developed C++ in a year now, and look at this:

http://blitzbasic.com/logs/userlog.php?user=8985&log=1544


Abrexxes(Posted 2008) [#55]
Some of you ment that it would be impossible for me to develop a DX9


No, but we have now (i think) 8 different dx engines on this board, what we want is somethink to download (buy?) and use. All the rest (worklogs,threads etc etc)....who cares?

bye

Edit: here is number9 : http://www.blitzbasic.com/Community/posts.php?topic=75451 ;) NEW-HOT-&-FRESH


KimoTech(Posted 2008) [#56]
Just to say, i have been working on nexus for about a half year now :S


Jerome Squalor(Posted 2008) [#57]
that looks really good Quimmer, are you gonna release a demo soon?


KimoTech(Posted 2008) [#58]
Here, i made a demo yesterday:

http://blitzbasic.com/logs/userlog.php?user=8985&log=1544


Andres(Posted 2008) [#59]
Very interesting. Will download the demo as soon as i get home.


boomboom(Posted 2008) [#60]
Doesn't run, PhysXLoader.dll not found


ICECAP(Posted 2008) [#61]
Yep same problem here, needs PhysXLoader.dll

So I went on a hunt and downloaded the dll from here:
http://www.dll-files.com/dllindex/dll-files.shtml?physxloader

Now it cant for some reason open the Zombie.jpg texture...


slenkar(Posted 2008) [#62]
the physx drivers are on the ageia website

my graphics card cant handle shaders so it said: 'cant create directx device'

could you release a version with fallbacks?
e.g. dont display shaders if the card cant handle it


AJirenius(Posted 2008) [#63]
"Cannot open Zombie.jpg"


jayparker(Posted 2008) [#64]
"Cannot open Zombie.jpg"

All files are in the same directory as exe.


angel martinez(Posted 2008) [#65]
"Cannot open Zombie.jpg"


KimoTech(Posted 2008) [#66]
I'll check for that Zombie.jpg problem.

You need to install the latest PhysX drivers, because the engine implements PhysX.

You need a Pixel Shader 2.0 compliant graphics card, as the engine is based on shaders only, no Fixed Function. Thats so the engine is Direct3D 10.


KimoTech(Posted 2008) [#67]
Can you please take a screenshot of the Zombie.jpg error, and send it to twicfall@...? I would be glad to solve that problem.


angel martinez(Posted 2008) [#68]
It just says that windows message ("Cannot open Zombie.jpg" ) when you try to run the exe.


granada(Posted 2008) [#69]
Worked ok here


bytecode77(Posted 2008) [#70]
your demo does not only require the ageia drivers, but i had to move those dlls into your program directory.

[b]and it still says "texture zombie.jpg not found"


KimoTech(Posted 2008) [#71]
Its strange, because that Zombie.jpg error does only happen on certain systems. And the problem seems to be in the D3DXLoadTexture() command in Direct3D.


Ross C(Posted 2008) [#72]
I hope you get this working. It looks like you have worked very hard on it. I applaud your efforts thus far :o)


Tab(Posted 2008) [#73]
Nice water... keep your excellent job.


OJay(Posted 2008) [#74]
works ok here (geforce8). looking the other posts up, i would say it doesnt work on amd/ati cards...just a guess...

dont see anything special dx9 here though...its not even compiled with blitz3d, so i dont understand, why its in the _blitz_ showcase...

dont get me wrong, i appreciate your work. but...ive yet to see something, that gets me wanting to use your engine! small techdemos are really something fundamentally different then a fully fledged 3D engine...thats why we're seeing one "dx9 engine" after another, but havent seen even ONE finished till today ;)

but...im eager to get proven wrong! :)


Naughty Alien(Posted 2008) [#75]
Not working here...

P4, 2.4Gigz, 1Gig RAM, nVidia 7600GT, 256MB VRAM, WinXP Pro, SP2


Chad(Posted 2008) [#76]
It worked here, but as Ojay mentioned, nothing special. I'd like to see more on this though, so please provide more demos with stuff you have besides this, which could have been done with just Blitz3d.

p4 3.6ghz, 1gb ram, ati radeon x1650, xp