[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.