| CARVIEW |
Here are some ways you can help me:
- Really, at the very least I need ideas and suggestions. How can I develop this without any goals to work towards? So far this has mainly been a “feature creep” type of project where I just keep adding stuff.
- Report bugs in the mod on the project site.
- Make something using the mod and show it off.
- Tell your friends.
- Contribute, email me and I’ll give you privileges on the project so you can make changes to it.
I’ll keep updating stuff, when you download the alpha release it has svn on everything so you can update with just two clicks.
Oh and, here’s another video for you guys:
Weapon Missile Trails ]]>
GLSL shaders!
Yeah, I’m still alive and still working on Quake Construct
400th code revision yesterday.
https://code.google.com/p/quakeconstruct/ ]]>
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:


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:




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:





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 






Took about 2 days.
P.S. 300th code revision!
]]>
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
endlocal 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
endlocal 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”)
endlocal 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 = 400for k,v in pairs(tab.playerIcons) do
draw.Rect(x,y,40,40,v)
x = x + 40
endx = 0
y = y + 40for k,v in pairs(tab.itemIcons) do
draw.Rect(x,y,30,30,v)
x = x + 32
enddraw.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
]]>
All of the numbers are contained in one texture (the animated sprite) and can be referenced by frame:

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:

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:



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
]]>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 https://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.
]]>