Quake Contruct Alpha Release!

August 16, 2009 by hxrmn

Me and my pal Sorlag

June 12, 2009 by hxrmn

Picture 005Picture 004

Picture 003Picture 009

Picture 010Picture 007

The 2 front teeth didn’t come out very well (low poly) so incidentally she doesn’t bite.

A paper art project by me,
Total virtual 3D-layout time 15 minutes.
Total construction time 45 minutes.

Pong and Panels

June 2, 2009 by hxrmn

Remember when I mentioned that draw.3D function, well I did more stuff with it.

I also wrote a new networking tool: CreateNetworkedTable(index) which allows you to share a table(array) of data.

Here’s my friend and I demonstrating both systems in a game of 2D3D pong:

shot0050shot0051

The paddles, text, and board are all 2D elements plastered onto a 3D quad.

The 2 players are just 3D models rendered into the scene.

I also turned off world rendering in this example so what you see here is all that’s being rendered.

Now here’s the other thing, panels:

shot0037shot0040shot0038shot0039

These are similar to the panels in quake4 and doom3
This demonstrates several things:

  • QuakeConstruct’s new abillity to control and spawn map entities.
  • Draw.3D
  • Networked tables

These panels were placed in the map and paired with other entities.

The locked panel (OpenDoor) is set to be locked by default. Clicking on the other panel will unlock it, once unlocked the “OpenDoor” panel will… open the door.

I know images aren’t quite enough to convey what’s going on here, so I’ll post a video later.

Also, I made this pretty awesome 3D scoreboard for maps q3dm17 and q3ctf4:

shot0022shot0018shot0029shot0014shot0015

So yeah, draw3D again and this also shows off the new client scoreboard binds in QuakeConstruct.

So now you guys are up to date on what I’ve been messing with.
I’ll post some videos later :)

Render Targets and draw.Start3D awesome stuff

May 17, 2009 by hxrmn

shot0000

shot0002

shot0001

shot0003

Trails!

April 28, 2009 by hxrmn

Just finished work on a shiny new trail renderer:

shot0011

shot0009

shot0010

Took about 2 days.

P.S. 300th code revision!

Late night update

April 5, 2009 by hxrmn

Today I added loading screen support to lua now you can change the loading screen layout, also I changed quake3’s windows console color (the blue was getting annoying)

loadin

Here’s the script to do it:

local function centerText(y,str,tw,th)
local sw = string.len(str)*tw
draw.Text(320 – sw/2,y,str,tw,th)
return y + th
end

local function centerText2(y,str,ts)
local tw = 18*ts
local sw = string.len(str)*tw
draw.Text2(320 – sw/2,y,str,ts,0)
return y + 25
end

local console = LoadShader(“textures/sfx/console02″)
local t = 0
function d2d(tab)
draw.SetColor(0,0,0,1)
draw.Rect(0,0,640,480)

local svinfo = GetConfigString(CS_SERVERINFO)
local sysinfo = GetConfigString(CS_SYSTEMINFO)
local cheats = CS_ValueForKey(sysinfo,”sv_cheats”)
local pure = CS_ValueForKey(sysinfo,”sv_pure”)

local mapname = CS_ValueForKey(svinfo,”mapname”)
local host = CS_ValueForKey(svinfo,”sv_hostname”)
local maptext = GetConfigString(CS_MESSAGE)
local motd = GetConfigString(CS_MOTD)
local levelshot = LoadShader(“levelshots/” .. mapname .. “.tga”)
local detail = LoadShader(“levelShotDetail”)
if(levelshot == 0) then
levelshot = LoadShader(“menu/art/unknownmap”)
end

local w,h = 320,250

draw.SetColor(1,1,1,1)
local y = centerText2(10,”Connecting to ” .. host,1)
y = centerText2(y+2,”Loading ” .. tab.loadString,.5)

draw.Rect(320-w/2,240-h/2,w,h,levelshot)
draw.Rect(320-w/2,240-h/2,w,h,detail,0,0,2.5,2)

local ny = 240+h/2
ny = centerText2(ny,maptext,1)
centerText(ny,motd,10,10)

local x = 0
y = 400

for k,v in pairs(tab.playerIcons) do
draw.Rect(x,y,40,40,v)
x = x + 40
end

x = 0
y = y + 40

for k,v in pairs(tab.itemIcons) do
draw.Rect(x,y,30,30,v)
x = x + 32
end

draw.RectRotated(600,440,60,60,console,-t*10)
t = t + 1
end
hook.add(“DrawInfo”,”cl_ginfo”,d2d)

Pretty simple stuff.

My crowning achievment for the day was optimizing the lua downloader.

Instead of taking 45 seconds to download a 500 line lua file it takes about 6 seconds. woot

I’m thinking about releasing this very soon. It’ pretty stable now :)

I just need to tie up some lose ends.

By the way, if anyone is visiting this blog (and I think you are)

Please don’t hesitate to make suggestions. I’m at a bit of an inpass because I’m not sure what people will want to do with this.

So if you have any ideas, post them in the comments or email me at Hxrmn@comcast.net

-Thank you

Progress!

March 10, 2009 by hxrmn

Today I made a hud using the new itemInfo bindings and the animatedSprite code I created.

NewHud

All of the numbers are contained in one texture (the animated sprite) and can be referenced by frame:

anim_numbers

I also JUST finished a new binding that lets lua coders write game shaders right in their scripts.

local data =
[[{
cull back
deformVertexes wave 100 sin 0.8 0 .5 1
polygonoffset
{
map gfx/colors/black.tga
}
}]]
local s = CreateShader(data)
local rmodel = LoadModel(“models/gibs/skull.md3″)
local tr = PlayerTrace()
local pos = tr.endpos + Vector(0,0,50)
local ref = RefEntity()
ref:SetColor(1,1,1,1)
ref:SetPos(pos)

local function d3d()
ref:SetShader(0)
ref:Render()
ref:SetShader(s)
ref:Render()
end
hook.add(“Draw3D”,”cl_shadertest”,d3d)

Result:

shot0022

I plan to write some kind of wrapper for this, something like:

local s = Shader()
local stage1 = s:AddStage()
stage1:AddParam(“blah”)
…etc

In other news, I am working on a help menu so people will know how to use this thing:

shot0023

shot0024

shot0025

The help menu uses a small markup language I wrote (similar to HTML) for quakeconstruct. So I should be able to churn out a pretty detailed help system.

So that’s the status of things as of right now, I’ll keep you guys posted (more often, I promise).

-Hxrmn

Welcome

February 13, 2009 by hxrmn

It is here I shall post many posts of information about quake construct and it’s development.

Make yourselves comfortable, bookmark this site and I shall keep you up to date on that status of all that is my quake3 mod.

What is Quake Construct?

Quake Construct is a quake3 mod that allows anyone with at least some
knowledge of the lua programming language to create *simple, small
modifications for the Quake 3 engine.

Through the use of hooks and bindings to the quake3 engine, users can assign
their own responses to particular events that happen in-game such as
Graphics Drawing and Player Interactions.

Lua is a high-level programming language, usually used for providing
scripting access for lower-level code. (see http://www.lua.org/pil/)

The goal of this project is to provide quake3 players with tools to design
Their own mods without touching a line of C, these mods can be run in
Real-time without compiling.

Why did you start working on this?

Because I wanted to design a faster way to make mods. I don’t want to write 100 lines of complex C code to make the player jump differently and then compile it, test it, and debug it for an hour when it doesn’t work.

What is Quake3?

Quake3 is a first person shooter that was released by ID Software in 1999.

When will you be releasing Quake Construct?

I’m not really sure about this one. I might just release a beta to start out and let people play with that while I fine tune the final release.

How often will you update this blog?

I’ll update every time I have something important to say about the mod, or when I make some kind of new breakthrough feature.

Tell us about yourself.

I am an 18 year old student.

I love pop-tarts, dogs, television, programming, and music of all sorts.

I build computers, make movies, and create game content (music, animation, textures, models, sounds).

I don’t have a girlfriend.