• What are you working on? V7
    2,001 replies, posted
[QUOTE=Robber;20259776]Ambient occlusion[/QUOTE] I think it's lightmaps
[QUOTE=Pj The Dj;20261165]I think it's lightmaps[/QUOTE] Yeah, doesn't look like AO to me. UDK has a new lighting engine that does global illumination; its ambient-occlusion thing is screen-space, and looks a little more regular than (and certainly ain't as colorful as) the effect visible in that screenshot.
Holy shit. I just did a benchmark between the ID3 Tag Reader that I wrote, Kajamtag, and a popular reader called TagLib. Just reading one file: [code] casey@gentoobox ~/git/benchmarks/kajamtag $ time ./kajamtag real 0m0.002s user 0m0.001s sys 0m0.000s casey@gentoobox ~/git/benchmarks/taglib $ time ./taglib real 0m0.006s user 0m0.004s sys 0m0.001s [/code] Now for 500 reads. It switches between two different files to hopefully make sure things aren't being cached. Let me know if I'm totally wrong about this. [code] casey@gentoobox ~/git/benchmarks/kajamtag $ time ./kajamtag real 0m0.030s user 0m0.014s sys 0m0.014s casey@gentoobox ~/git/benchmarks/taglib $ time ./taglib real 0m0.125s user 0m0.103s sys 0m0.019s [/code] And here is the code for each benchmark if anyone is interested in trying it out. Makefile: [code] CC = gcc LD = ld CFLAGS = -Wall -g TARGET = kajamtag OBJS = kajamtag.o prog1: $(CC) kajamtag.c -o $(TARGET) -lkajamtag [/code] kajamtag.c [cpp] #include <stdio.h> #include <kajamtag/kajamtag.h> int main() { int i; int s = 0; for(i = 1; i <= 500; i++) { //We're switching to make sure //results aren't being cached in //memory somewhere if(s == 0) { kajamtag_read("test.mp3"); s = 1; } else { kajamtag_read("test2.mp3"); s = 0; } char* title = k_getData(KTITLE); char* album = k_getData(KALBUM); char* artist = k_getData(KARTIST); kajamtag_close(); printf("File: %d Run: %d\n", s, i); } return 1; } [/cpp] Makefile: [code] CC = g++ LD = ld CFLAGS = -Wall -g TARGET = taglib OBJS = taglib.o prog1: $(CC) taglib.cpp -o $(TARGET) -ltag [/code] taglib.cpp [cpp] #include <iostream> #include <taglib/tag.h> #include <taglib/tstring.h> #include <taglib/fileref.h> int main() { int s = 0; for(int i = 1; i <= 500; i++) { TagLib::FileRef f; if(s == 0) { f = TagLib::FileRef("test.mp3"); s = 1; } else { f = TagLib::FileRef("test2.mp3"); s = 0; } TagLib::String title = f.tag()->title(); TagLib::String artist = f.tag()->artist(); TagLib::String album = f.tag()->album(); std::cout << "File: " << s << " Run: " << i << "\n"; } } [/cpp] [editline]10:00PM[/editline] All the code for Kajamtag is available here: [url]http://github.com/pvtcupcakes/kajamtag[/url]
[QUOTE=yngndrw;20253969]2D or 3D ? If it's 3D I'd suggest storing rotation (Or should I say orientation.) as a 3x3 matrix. Some of those properties seem too "higher level" for a base entity. They are assuming that it's a living and moving entity. I'd split it into Base Entity (Just storing position, movement and parenting.) and a Base Character. (Adding life and so on.)[/QUOTE] Well the life and stuff is just because just about every object in the planned game has a "health" stat. Say a crate or pillar, even most of the floors (aside from actual terrain). 'Tis also a 2D game, with other various sexriffic elements.
Started working on a procedural .vmf generator, got as far as creating random blocks yet. Just for kicks I started this in managed C++. (it sucks, and I'll probably rewrite the entire thing in the future) Took me hours to find and fix a float formatting error caused by .net's stupid culture settings, and took me another hour to fix vertex ordering for the planes. 2 boxes with numbers all over them are now on my desk, since the lack of sleep didn't contribute to 3d thinking :v:
Is anyone here goo with Unreal Script? I'm having real trouble getting a third person camera on my physic ball, I want it to be able to move around with the mouse.
[QUOTE=mahalis;20261440]Yeah, doesn't look like AO to me. UDK has a new lighting engine that does global illumination; its ambient-occlusion thing is screen-space, and looks a little more regular than (and certainly ain't as colorful as) the effect visible in that screenshot.[/QUOTE] Hmm that's pretty interesting to me actually. I always hated how U3 didn't have global illumination. But that's why I wasn't sure if it was in the lightmaps or not.
Just this: [IMG]http://i.imgur.com/3nPCn.png[/IMG]
I love when I type up a bunch of code, go to compile it, and I have no errors. I always expect to have forgotten a semicolon somewhere or forgotten to initialize a variable.
[QUOTE=redonkulous;20269358]I love when I type up a bunch of code, go to compile it, and I have no errors. I always expect to have forgotten a semicolon somewhere or forgotten to initialize a variable.[/QUOTE] I love it when things work first time. If it's over 100 lines and it works first time then I'm a happy man.
Underwhelming to look at, but got multiplayer chat working. This was quite a lot of work because the chat is a separate world, and a separate GWEN canvas. So getting it all working together - and being able to poke through each layer into the one below was a bit of a struggle. But it's all working now. [img]http://dl.dropbox.com/u/3590255/Screenshots/Botch/17Feb2010_001.png[/img]
That doesn't look like the kind of environment I'm used to seeing a chat in
Agreed, it's a bit strange. . .
So, there's multiplayer chat in the.. mapping tool? Cool, I suppose. It's awesome you got it working of course.
[QUOTE=arienh4;20270243]So, there's multiplayer chat in the.. mapping tool? Cool, I suppose. It's awesome you got it working of course.[/QUOTE] The mapping tool is just another world in his engine.
I know the editor is just there as an example, but it leads me to a thought. Have you thought about collaborative level editing ?
[QUOTE=garry;20269935]Underwhelming to look at, but got multiplayer chat working. This was quite a lot of work because the chat is a separate world, and a separate GWEN canvas. So getting it all working together - and being able to poke through each layer into the one below was a bit of a struggle. But it's all working now.[/QUOTE] Perhaps you've mentioned it earlier, but does each world take care of its own entity management and rendering or is it just a part of the whole thing?
Yeah each world takes care of itself. It's basically a blank canvas that it can draw on. They can overlay each other. They can be clientside or serverside (meaning that if the server changes worlds, all the clients are seeing the same world on screen, and all join that world). We did play with MP level editing. Without trying to make it all work, it did. We were editing the map together! The only problem was when it came to save/load - because it saved it on the server computer ;0
That's freaking awesome, do you plan on perfecting the MP level editing or you were really just messing around?
[QUOTE=garry;20269935]Underwhelming to look at, but got multiplayer chat working. This was quite a lot of work because the chat is a separate world, and a separate GWEN canvas. So getting it all working together - and being able to poke through each layer into the one below was a bit of a struggle. But it's all working now. [img_thumb]http://dl.dropbox.com/u/3590255/Screenshots/Botch/17Feb2010_001.png[/img_thumb][/QUOTE] Yeah, that is pretty underwhelming. [sp]naw I'm kidding with you :V[/sp] Holy shit my post sucks as a top-of-page.
Masm ftw! [code].386 .model flat, stdcall option casemap :none ; case sensitive include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\advapi32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\advapi32.lib .data .code @TheStart: GetSection PROC call @F @@: pop eax sub eax, 5 ret GetSection endp GetBase PROC call GetSection sub eax, 182701h ; Edit with the rva of the section. ret GetBase endp GetEntry PROC Base:DWORD, IncBase:DWORD mov ebx, Base mov eax, [ebx+3Ch] add eax, ebx mov eax, [eax+28H] .IF IncBase != 0 add eax, ebx .endif ret GetEntry endp GetModHandle PROC File call GetBase add eax, 1194h ; Edit with rva of GetModuleHandleA import push File call dword ptr [eax] ret GetModHandle endp GetProcAddr PROC Handle:DWORD, ProcName call GetBase add eax, 11ECh ; Edit with rva of GetProcAddress import push ProcName push Handle call dword ptr [eax] ret GetProcAddr endp TheDll db "disable.dll", 0 LoadLib db "LoadLibraryA", 0 VProtect db "VirtualProtect", 0 Kernel db "kernel32.dll", 0 VirtProtect proc adr:dword, siz:dword, new:dword, old:dword push old push new push siz push adr call GetSection add eax, Kernel-@TheStart invoke GetModHandle, eax mov ebx, eax call GetSection add eax, VProtect-@TheStart invoke GetProcAddr, ebx, eax call eax ret VirtProtect endp LoadDll proc File push File call GetSection add eax, Kernel-@TheStart invoke GetModHandle, eax mov ebx, eax call GetSection add eax, LoadLib-@TheStart invoke GetProcAddr, ebx, eax call eax ret LoadDll endp Hooked byte 0 OBytes BYTE 5 DUP(0) OEntry DWORD 36FAh ; Edit with rva of the original entrypoint LoadTheDll PROC call GetSection add eax, TheDll-@TheStart invoke LoadDll, eax invoke GetModHandle, 0 invoke GetEntry, eax, 1 mov ebx, eax mov ecx, OBytes-@TheStart call GetSection add ecx, eax mov eax, dword ptr [ecx] mov dword ptr [ebx], eax mov al, byte ptr [ecx+4] mov byte ptr [ebx+4], al jmp ebx LoadTheDll endp Main PROC LOCAL entry:DWORD LOCAL old:DWORD ;Get Main Modules entry for redirecting invoke GetModHandle, 0 invoke GetEntry, eax, 1 mov entry, eax ;Copy Entrypoint for restoring mov ebx, entry mov ecx, OBytes-@TheStart call GetSection add ecx, eax mov eax, dword ptr [ebx] mov dword ptr [ecx], eax mov al, byte ptr [ebx+4] mov byte ptr [ecx+4], al invoke VirtProtect, entry, 5, 4, addr old mov ebx, entry mov byte ptr [ebx], 0E9h call GetSection add eax, LoadTheDll-@TheStart sub eax, ebx sub eax, 5 mov dword ptr [ebx+1], eax ret Main endp _start: call GetSection add eax, (offset Hooked)-@TheStart .if byte ptr [eax] == 0 call Main call GetSection add eax, (offset Hooked)-@TheStart mov byte ptr [eax], 1 .endif call GetSection add eax, OEntry-@TheStart mov ebx, dword ptr [eax] call GetBase add eax, ebx jmp eax end _start [/code] Ya it is messy, it is a stub so a lot of the mess is due to me avoiding relocations like the plague. All you have to do is repair 4 addresses when you write this stub. No need to worry about relocations :D. This is being used in my ComodoPoC. Basically you write this stub to a Dll and when that Dll is loaded it will load "disable.dll".
Wha? What exactly is that. Nevermind, misread last sentence.
Looks like asm code chunks wrapped in some little functions?
-snip-
Now that I only coded xna 2d, I decided to load some heightmap of ireland or sthg for my 3d start :D Then I interpolated the height values to shade it nicely :) [IMG]http://img683.imageshack.us/img683/2141/heightmap3d.png[/IMG]
[QUOTE=s0ul0r;20273502]Now that I only coded xna 2d, I decided to load some heightmap of ireland or sthg for my 3d start :D Then I interpolated the height values to shade it nicely :) [IMG_thumb]http://img683.imageshack.us/img683/2141/heightmap3d.png[/IMG_thumb][/QUOTE] That's really cool. Try it with green at the bottom, grey in the middle and white at the top. It would look like proper mountains.
[QUOTE=garry;20269935]Underwhelming to look at, but got multiplayer chat working. This was quite a lot of work because the chat is a separate world, and a separate GWEN canvas. So getting it all working together - and being able to poke through each layer into the one below was a bit of a struggle. But it's all working now. *Large Pic*[/QUOTE] It would be cool if people could upload their scripts, function calls and whatever sections of code to a server and that they could be categorized and tagged. So when people like me who have not much skill in coding but a skill in other things could pull a script from the database. Perhaps do the same with objects, sounds and levels.
:> [IMG]http://img98.imageshack.us/img98/4623/mountains3d.png[/IMG] Now I'm thinking about building an octree class (Or use the one example I just found online :D) And check the collision between a "player" and the ground so that you can walk around :D
Working on a new control for GWEN (and botch's chat) that prints multicoloured (and multifonted) labels. Took me ages to fix all the caveats regarding text wrapping. [img]http://dl.dropbox.com/u/3590255/Screenshots/Botch/17Feb2010_004.png[/img]
That is some nice test text you got there garry.
Sorry, you need to Log In to post a reply to this thread.