Two three proffs from the US....the usual way SIGGRAPH papers. One or two I think. Can get them on DVD these days..:)Quote:
Originally Posted by wossname
- ØØ -
Printable View
Two three proffs from the US....the usual way SIGGRAPH papers. One or two I think. Can get them on DVD these days..:)Quote:
Originally Posted by wossname
- ØØ -
I am in Win now..:)..all ready irritated by your {} grrrrrr...:)...but I will try to not let it kill me.
Just a short Q. Did you make taht Matrix class? Are we using it? Or is it something I forgot to take out before I sendt it to you?
- ØØ -
Ohh..and can you send me your test map file, so I can see what it is supposed to look like?
- ØØ -
I didn't make matrix.
I haven't got any test maps yet.
Quote:
Originally Posted by wossname
Ohhh...I just assumed that you had once since your code is trying to read one and throws an exception when I start it..:)
Grrrrr...got stuck in the phone for 25min...and now I have to go...:(
Will start on the Binary Tree tomorrw. Just found out that you can't use a AVL tree anyway. So then I can warp up a tree fast..:) Finished before the weekend...:)
- ØØ -
I'm going to pass out this is so good....
there are a couple of glitches, the map area doesn't draw perfectly yet.
Next: get the 3d cube preview operational. :D:D:D:D
The editor saves AND loads map files (*.dsm) :D
That is seriously good going. I love you more then ever you know...:)..might have to end up getting married to you..:)
But I hate the faqt that you always have things to show off. Nice screenies and so on, while I can only show off a formula or a pointer..:D..makes me look dumb..:D
- ØØ -
I'm not the marrying kind, lets just live in sin instead.
Note, as soon as I have the 3d preview working inside that black rectangle You'll be able to see your code in action! And the game itself well, we'll be little short of heroic if we manage to pull this off.
Fame, fortune, nubile 21 year old chicks throwing themselves at us (well you get that already but I'm looking forward to it :D).
Today i'll try to make that C++ DLL with the ColorMatrixEffect stuff in it. If I can get that working then I think we can bend our sttrictly C# rules a little. We can always release the DLL separately as a .net add on for anyone to use. Yeah its cheating but what the hell, as far as framerates go, time is money so to speak.
Granted...Quote:
Originally Posted by wossname
Sounds incredible...I will just work on the binary tree in the mean time. I will get enough time to look for that perspective bug when your code is actualy rendering something..:DQuote:
Originally Posted by wossname
BTW I have started to write a list of optimizations I want to do. But since we now are more or less working on the same files I don't want to do them yet. But I have some small idea here and there. Not going to do any great impact but all of them togheter might pull a FPS or 2.
Hehe...BTW did I tell you (or did I only tell Woka) that night untill yesterday I neve went home. This Islandic bird let me "sleep" at her place (the hostel here) after the party. SO that means that I was at the CERN site (my work area) for thrilling 36hours..:D..not working all the time though.. :blush:Quote:
Originally Posted by wossname
I just hope it can do what it says it is doing. If it does, and it both looks better and is faster, then I might say yes to this too..:D..It is probably going to be exposed to C# sooner or later anyway. BTW did you notice that it said GDI+ version 1.1? Is that because of .NET 1.1 or doesn't those version number have anything to do with each other at all?Quote:
Originally Posted by wossname
- ØØ -
This CME thing is starting to bother me. I don't think its possible after all. I reckon the classesdon't actually exist, the MSDN pages did say "This is preliminary and subject to change" so I think MS didn't put these classes in 1.1 at all. I don't know if 2.0 has them either because i only have 1.1 here at work.
I have posted in the C++ forum about this.
I won't persue this any further unless the C++ thread gives me something to go on.
ALL the MDX pages on the ned says "Subject to change blah blah blah"..:)...they are rearanging stuff. I even managed to get into a page where the adress is:
msdn2.microsoft.com'
:)
I have DEVESTATING news...:( I have missunderstood big time..:(...I just want to die..:(...I thought I could do two things at the same time, but I can't...::(....I have failed...kill me now...and kill me good..:(
You know....we both need Z-Ordering and Culling? And BSP can do them both? But the thing is that you don't build the BSP tree the same way for the two methods.... :eek2: :eek2: :eek2: :eek2: what to do, what to do....I really have to rethink this now... :eek2: :eek2: ..I am lost..:(
- ØØ -
Wossy's thinking space:
*Problem with adding / deleting image files and still preserving the indexes in all the cubes. Need to iterate through entire map every time we add/insert/delete an image from the list :mad:. That's going to suck.
For texture alloc:
* Detect right-click on the "crucifix" to remove that texture
* enable draging between crucific boxes to increase ease of use, (copy/paste dragging)
For 3d preview
* Dragging mouse around map layout moves preview camera??? :D that would be cool. Maximum rendering quality because FPS doesn't matter in the editor. use left/right arrows to rotate camera (or maybe right click to set LookAtPoint).
Presumeably you wanted the BSP for culling right? if we walk the tree and choose all the wallparts we want to draw, then we can put those in an separate array and sort them based on distance from the camera. The culling will give us enough time to do the sorting (arrays have built-in quicksort anyway).Quote:
Originally Posted by NoteMe
Anyway, for distance darkening I need you do add a new field to WallPart...
So,Code:public float DistanceFromCamera; //must be a fraction of the total depth of the bounding box, values 0 through 1
1. use the BSP to reduce our data set
2. calculate distances (based on centroid of wallpart) of selected wallparts
3. sort selected wallparts in a separate array (the original BSP will remain intact)
4. render all the sorted wallparts from back to front.
I was thinking more in the lines of.
- Using BSP to do the z-ordering
- Making a grid and only draw those that are inside the grid parts that touches the FOV.
Calculating the distance for ALL the wallparts ever frame is going to take ages. That is for sure. I really have to rethink this, and do some speed testing on arrays and references in C#. The Boxing Unboxing might kill us all.
- ØØ -
Not every wallpart, only the ones we want to render. Well there are several methods for calculating distances. I'll do a few tests now.
hey maybe the 4 point idea isnt that bad after all :D
here's a little mspaint job of it, middle object being the object of interest and the ones aroud it being its 4 known relatives, by angle of the camera you could calculate which objects come first (this calc could be done once n stored since it may take awhile)
would work the same way as 2d rotation (especially since ur maps are fundamentally 2d, no 2nd or 3rd floors) where u calculate that, then branch off the 1,2 and 3 ordered objects to calculate the next set, u could represent the whole thing by their x,y co-ordinates. I think it would work
Its a nice idea but the cubes themselves do not end up in the data structure of the running game. They are only for the efficient (and accurate) seting up of wallparts in relation to the grid.
ØØ:
Just done some timings...
500 wallparts (distance is calculated, then wallparts are sorted on on that distance from the camera) takes this many seconds (several consecutive runs)...
0.00046s
0.00074s
0.00047s
0.00051s
0.00065s
0.00061s
0.00084s
0.00057s
0.00059s
I think you'll agree that this is not going to be a problem. We probably won't even have 500 wallparts in some complete maps! Fast :D
I can confirm that the sorting is correct too. We'll need to make wallparts (or primitives) implement IComparable, which is what I had to do to make this work.
the boxes were just to represent objects, could also be a wallpart.
but your timings there are great so clearly you've already got it going.
Im excited to see this starting to come together, i cant imagine how happy you guys are with yourselves.
Yeah, but you have to remember that we also need to find out what wallparts to draw...;)..that means that we don't have a static list anymore. So if you want to sort them like that, you have to make a new list, and then add references to all the wallparts that is going to be drawn, and THEN sort it....and that all togheter is much more work then you just did...Quote:
Originally Posted by wossname
- ØØ -
I was talking to this lad during lunch hour about the Space partitioning. And we started to play with the idea about portals. It is a really new idea. And I know nothing about how to implement it. It is rather new. Think that HL2 was one of the first games using it...but don't quote me on that.
The idea seems simple enough, untill at least you start building the tree, and you see that it is no longer a tree but a graph...:(...will look a bit furuther into it. here is a screeny just to show you what I mean.
well you could make it simpler and use zones, like UT, each room is a zone, you can only see within your zone and 1 zone ahead, assuming that you never have 2 doors lining up in a way you can actually see through 2 zones
I was holding that thought for 5 sec too, untill I looked at your map again. It is not going to work since on a map like yours, you can see up to 5-6rooms in one straight line.
http://www.noteme.com/doomsharp/img/img027.jpg
- ØØ -
not true, this still works, hallways are zones too, you can see your current zone and any joinng zones, so when theres a sharp corner you may create a new zone because its impossible to see around the corner until you enter the next zone, these are all made at design time (person who makes map, or a robot if u really like but thatd be very hard to make efficient)
see attachment of diff zones
Quote:
Originally Posted by Phill64
Are you kidding me? Do you have to make the sones by hand in UT? Hehehe...that sounds like the dumbest thing in the world. Are you really sure? Because what you just drew now has NO logic behind it at all except the human eye logic. The algo to produce this is million of lines long. And not possible to really implement. Because like the red field in your right corner on the bottom can be devided into many small zones too, but it is just because you can analyse it with your eyes that you will see that it is not suitable...
- ØØ -
yes in UT you create zones, i remember fooling with the maps n i broke the display when i messed with the zones, but i see it possible for a bot to do this at map size or load time.
looking at the below example, red is the places of interest marked by the bot, any spot with paralell walls, or where two spots combined create paralell walls. filling in space between these, if one square is marked, but it is a loner, it is disregarded and filled in with its connected zone(to avoid the green room example) the dark yellow and green are spots that have been disregarded. the red is also combined to make zones, this creates zones similar to my first human example
this would create issues if someone wanted to make a map where you can see through many rooms however...
Yes I know all that you muppet. But it shouldn't be all that much work. All we need to do is keep a separate (fixed size) wallpart array standing by expressly for this purpose. Then we'll have no problems walking the tree and adding references to the standby array.Quote:
Originally Posted by noteme
Then we sort the first n wallparts in the standby array and draw them, we can leave old wallparts from previous frames to either sit there at the end fo the array or get repeatedly overwritten each frame.
As long as you can write a fast BSP we'll be just fine.
Optimisation hint: uint's are MUCH faster for loop counters than ints. About 25% in some cases!!
I'm doing some more research into unsafe code. I just wrote an integer --> binary string function in unsafe code and it goes at well over 1.3 million runs per second! We can create array's on the unmanaged stack too for huge performance gains.
This will be cool for fine tuning heavy math.
Must be big then, and then hope that the sort function works if we have null pointers in the array.Quote:
Originally Posted by wossname
I can't, I lost my shoe....*running around to find it*Quote:
Originally Posted by wossname
Hmm...nice to know. The only thing about stuff like this in C# is that it only is if you are using that compiler...all other compilers might get different values..:(Quote:
Originally Posted by wossname
BTW I found out two-three things we have to change. Everytime we use DLL import as we did with our timer, we have to add:
[System.Security.SuppressUnmanagedCodeSecurity]
before the DLLImport line. This will boost our performance...
----------------------------------
2:
When we are going from view to world coordinates, we are returning a vector. This is a class, and it will be stored on the heap. Since the heap is slow, and we have to process MANY coordinates each frame I suggest we change it to a struct with only 2 memeber variables. A point or something.
------------------------------------
3:
To fix the path problem we have had I found out a nifty thing. At least in VS 03 you can go to: Choose Project, Add New Item, add application configuration. Then edit the XML file you get, and then write something like this in stead:
Code:<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appsetting>
<add key="MediaPath" value="..\..\texture\" />
</appsetting>
</configuration>
Then we can use the MediaPath variable in front of the texture names i.e
MediaPath + "gaytexture.bmp"
- ØØ -
wossy's test map
That'll do nicely. Thanks.
A small light here. I think Axis Aligned BSP tree is the way to go. At least it suddenly seems so clear to me that bounding volumes are the way to go. We can make a hierchy (SP?) of volumes. Can be in different sizes (K-D Tree look alike), or can not be in different sices (Quad tree look alike). Just look at the picture under. If we say that the WHOLE map is one quad. then devide it up in smaller quads like on the picture (or just in 4 as in a quad tree) then test if any of these are outside the view frustum, if it is then forget about that arm in the tree, if it is not then devide it up in new quads, and keep on doing this untill a certain optimized point, then draw those who we didn't toast..:)
To show it off on the big map here. Think about the guy in the upper left corner. Looking towards the center of the map. THe lilac field is his view frustum. Then start splitting up, and you all ready in the start finds out that three big nodes can get discarded. Then devicde the one that contained the frustum, and you see that didn't help much. But if we had devided number 4 there up in 4 more pieces you would see that we would get even less stuff to reander.
How many times we need to split will have to be tested and tuned during runtime.
http://www.noteme.com/doomsharp/img/img031.jpg
All I have to say is: :eek2: :eek2: :eek2: :eek2: :eek2: :eek2: :eek2:
Things are looking awesome so far though guys. Can I write some VB plugins for it? A trainer or something? J/K. Will the game engine be in a DLL that I can use to mess around with?
Also, I think I will be getting cable internet soon, so I will spend a day here and there looking for textures and see what I can come up with. School starts soon so I can't gaurentee how much time I wll have.
Thanks...yeah, it starts to look like something...Congratulations to wØØsy for the look, and NoteMe for the feel..:)Quote:
Originally Posted by eyeRmonkey
I havn't actualy though about the DLL issue. Since it is going to be open source anyway, I guess people can do what ever they want with it. But if wØØsy have any strong feelings about DLL or not to DLL, then I won't veto him....:)
Nice...I didn't know that people like you still existed..:)...I havn't actualy heard of anyone in Norway having dial up the last 4 years....The last guy I remember was when I was on high school...hmmm....Quote:
Originally Posted by eyeRmonkey
I have dialup you muppet (at home that is).
Anyway, funny you should mention it, the TexEng and 3D math gubbins are already in a DLL. This is to make several classes available to both the editor and the game. We have 3 projects in Doomsharp so far: game (exe), math+graphics (dll) and editor (exe).
We'll need to restructure it A LOT before its ready for release. Its a bit of a mess at the moment. I want to add a bunch of events to the map and Mapcube classes to make things smoother, making a map editor is immensely complex.
Tell me about it....I had everything SOOOOO nicly wrapped up in my project files, then I went on my vecation, and when I got back, NOTHING was working..:D:D:D:D:DQuote:
Originally Posted by wossname
- ØØ -
Nothing worked when you gave it to me :lol: Unlesss you like things to be upside down and backwards :D
Quote:
Originally Posted by wossname
I did that on purpose so you should not start to mess up my stuff......grrrrrrrrrr
"Never underestimate the ingenuity of complete fools" - DNA :D
Last night I was testing out the map editor by copying phill's small map. It took quite a while so I'm going to put in a few handy features:
1. Enable user to drag one cube into another square to copy it. this will make building long walls easier.
2. default floor and ceiling indices, so that each cube has these inserted automatically. this can be changed at any point in the editing and will only affect cubes inserted after the change. This lets us quickly build rooms with different color carpets....(:lol: we definitely need this to be the first ever FPS to feature nice paisley carpets :D).
3. Right clicking to delete cubes from the map.
4. Probably no undo function at the moment. That would be hard to implement without building a whole bunch of new classes.
5. Group editing of cubes. Drag a box around several cubes and all subsequent changes affect them all. Right-click dragging will delete all the cubes in the group.
Haha. This is Botmans Old website, where he puts the comments from the Half-Life 1 SDK. I thought it had been taken down, but anyway, its still here. That used to be a very good site for Half-Life programming (not hacks, but bot AI, MOD making, etc).Quote:
Originally Posted by kleinma
Others:
chemCode://No platform specific code in vgui\lib-src\vgui dir. Code in vgui\lib-src\vgui should
//only include from vgui\include or standard C includes. ie, if I see windows.h included
//anywhere but vgui\lib-src\win32 I will hunt you down and kill you. Don't give me any crap
//that mfc is platform inspecific.
utils\vgui\include\vgui.h (line 24-27)
// why does this work?
dlls\controller.cpp (line 556)
// this is the most hacked, evil, bastardized thing I've ever seen. kjb
dlls\doors.cpp (line 744)
// CheckRangeAttack1 - drop a cap in their ass
dlls\hassassin.cpp (line 653)
// UNDONE: blah, this is bad, we should use a stack but I'm too lazy to code one.
dlls\monsters.cpp (line 1178)
Note this is devastating. What are we going to do?
I wish you hadn't found that.
I've added a post to that thread anyway, I've asked if that code would be compatible with drawing quads. For saying its a fast algorithm I can see MANY places where simple optimisations could be made. If I could be arsed I could probably increase that guy's frame rate by abour 10 %.
Anyway. Lets persevere as we have been doing. This is Wossy's and Notes project and I'm damned if anyone is going to come a long and make me quit it when we've come this far. If its any consolation (to me mostly) that guy comes from cambridge, so he's probably some kind of almighty math entity embodied on earth in human form.
I'm determined not to be put off by this.
Further thoughts: (lets call that other thing you showed me "X")
1. X seems to only be capable of rendering a single object against a stationary background. The renderable data is always known, there is no BSP involved.
2. We havent used any unsafe code yet, and X uses loads.
3. Our current texture storage is very inefficient.
4. Mr X seems to be a walking brain and we are just two alcoholics. :D
Don't worry about it, it's all good baby!
[QUOTE=wossname]
4. Mr X seems to be a walking brain and we are just two alcoholics. :D
[QUOTE]
aren't we all? :D
hey, what is this X? i assume a program which draws an object(mesh) incredibly fast?
Our first map is done!!
Check out this little beauty!!!!
Took about 20 minutes to draw up, thanks to the new user friendly features :)
[QUOTE=Phill64][QUOTE=wossname]
4. Mr X seems to be a walking brain and we are just two alcoholics. :D
Would that it were so simple.Quote:
aren't we all? :D
hey, what is this X? i assume a program which draws an object(mesh) incredibly fast?
Quote:
Originally Posted by wossname
We? I am going to keep on doing the things I am doing...it is YOU that have to redo stuff...:D::DD:D:D::DD::D:D
- ØØ -
Quote:
Originally Posted by wossname
Now THATs the attitude....we might even learn something from this. And that isn't BAD you know..:)...maybe even something for you to write about in your book....:)'
- ØØ -
Done...:)Quote:
Originally Posted by wossname
Correct...no culling, no transformation, and a static camera ALWAYS 90 deg on the surface.Quote:
Originally Posted by wossname
Yeah, his whole rendering is unsafe. It is the rest that is managed. And that part is pretty much like ours, the vector class and so on.Quote:
Originally Posted by wossname
He is getting us a bit here, but it is much easier for him since he doesn't have perspective at all. It would be much easier without perspecitve.Quote:
Originally Posted by wossname
How did you know that I have just been drinking?Quote:
Originally Posted by wossname
I love you too..:)Quote:
Originally Posted by wossname
- ØØ -
[QUOTE=Phill64][QUOTE=wossname]
4. Mr X seems to be a walking brain and we are just two alcoholics. :D
Quote:
aren't we all? :D
hey, what is this X? i assume a program which draws an object(mesh) incredibly fast?
It draws something....kind of fake 3D stuff....hard to define..:)
- ØØ -
Quote:
Originally Posted by wossname
So at least it took less time then for me to walk home from work tonight...freeking buss left me in the middle of no where...grrrrrrr....
Looks really good. So are you able to draw that stuff too? Or...:)'
- ØØ -
care to give me a link? is it Iso 3d ?Quote:
Originally Posted by NoteMe
OK...due to my Hard drive crashing on me...I have lost about 5000 files with my code and assets from the last 12 years...The newest backup that is working is in Norway.
The good thing is that this doesn't affect this project too much, except that more or less all my C# and Managed DX code is ruined....and with that the optimized camera class is also gone..:(...so I will be set back for a few days weeks years....sorry...:(
- ØØ -
Lets talk about something else :D
Like this. I finally saved and loaded a map into the game!! Naturally it won't draw z-order properly because we don't have a BSP in place at the moment.
This is a MAJOR step forward, rejoice! :D:D:D
Hehehe...Z-ordering is a ***** hehe..:)....lovely....great...love you times two..:)
- ØØ -
You guys really are doing something special here. Perhaps when you aproach the final stages, you would consider creating a multiplayer ability so VBF'ers can have a go at each other :thumb:
*bows*
I think me and wØØsy have to start limit this project in one or an other direction...:)
wØØsy, next time you are online and you see me..please contact me so we can find out how long we actualy want to go with this...
- ØØ -
I saw the latest screen shot and its very good. I myself am doing research as i am trying to build a 3d engine myself. So i know how difficult it is to even create such results without directx/opengl. So very good going by you guys. And BTW when u stop doing this project please do upload the sourcecode that someone else continues it.
Off course we will. We have no secrets...except that we do write sloppy code on our way to the goal...:)
- ØØ -