Welcome!

This is the homepage of the open source Zircon engine ("DarkPlaces Mark V Project"), most of the 100+ enhancements are user-interface such as mouse driven menu and ALT-ENTER or user/mapper/developer convenience retaining full-compatibility with DarkPlaces.

Visual Guide: Features


Current Version: October 2 2023 v 60. Now with Quake Remaster support, "r_waterwarp 2", "r_waterdeform 2". Quake Remaster HUD via "sbar_quake 2" and automatic 2D scaling.
Linux compile source via "make sdl-release"


Quake3_Quake1 Mapping Resources is taking form. Tutorials on books/npc mouse driven dialog are up.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

April 27: Dot Dot Dot .. (Download: Zircon Beta #49 - Win64)

Work on the user-interface continues ... visually nothing new. Everything lately has been wiring for input/text parsing/mouse actions .. these activities are not very visual so no screenshots at the moment.

April 24: Gradient System

Prying into the inner workings of the 2D drawing system in DarkPlaces, there was something I needed to test and I wasn't certain what the result would be.

gradientThe 2D Polygon Drawing System, unlocked and available to the engine for drawing now in Zircon. DarkPlaces Beta retains the DarkPlaces Classic capability of drawing gradients.

DarkPlaces Beta -- the base of Zircon Beta -- has a rewritten 2D renderer that affects CSQC. It does not render exactly like DarkPlaces Classic ("DarkPlaces 2014").

The DarkPlaces Classic system of 2D drawing supported drawing gradients. Does DarkPlaces Beta?

Fortunately the answer is yes. I was not sure until the test -- the new 2D drawing system is more "Q3 shader based" and that is quite nice (shaders in 2D user interface including animations) -- however, the Q3 shader system does not use gradients at all.

Why Do Gradients Matter?

Without gradients, 2D drawing is solid color. Gradients can make buttons and other user interface elements look less "bland". If you played the Quake3_Quake1 Tech Demo and talked to one of the NPCs, you might recall the interaction screen had -- rounded rectangular buttons.

Those buttons are not images. I wrote CSQC to do a rounded polygon draw of each of the 4 corners of the buttons and the CSQC code specifies the corner drawing method (radius/etc).

April 23: Clipping / Scissor Area

User interface works continues. When drawing a text area, it is desirable to slightly overdraw text but clip the draw using a scissor region.

cliparea

In DarkPlaces Beta (and therefore Zircon Beta), setting a scissor area will trigger an immediate draw of the current batch of 2D interface draws queued up.

Note that setting scissor regions are available in DarkPlaces via CSQC.

void(float x, float y, float width, float height) drawsetcliparea 
Specifies a 2d clipping region (aka: scissor test). 2d draw calls will all be clipped to this 2d box

April 22: Overhang (Download: Zircon Beta #49 - Win64)

Fonts have "overhang", sometimes called ascend/descend, it is space for the letter "j" and friends to render below the text "line".

overhang

This information is helpful for drawing purposes, the "vertical size" of a font and can contain a lot of "dead empty space" for overhang, making vertically centering text look quite off-center. DarkPlaces loads TrueType fonts, but looking around it was not loading that information. The freetype library documentation was not particularly helpful, but I did manage to get Zircon to load this ascend/descend information to make these calculations.

https://media.moddb.com/cache/images/downloads/1/270/269066/thumb_620x2000/smokey_lit_sprite.gif

Classic DarkPlaces supports lit sprites. You put an exclamation in the name, and DarkPlaces will interpret the sprite as lit by map lighting and such instead of normal sprite fullbright rendering.

It does not correctly render in Zircon Beta or DarkPlaces Beta at the present time. (It does render correctly in Zircon Alpha, which is based off Classic DarkPlaces).

April 21: Working Away

As I continue to work on the next version which begins to use some graphical interface enhancements (for game data inspection at first), there are certain things that DarkPlaces has in the source code and the CSQC that make me happy:

  • Dynamic array support
  • Tokenization of strings in a variety of different methods (including exposing them to QuakeC).
  • String list manipulation including sorting.
  • Several CSQC text manipulation functions because the strings work with DarkPlaces color codes etc.

where is pacman machine

None of what I am doing with the user interface uses QuakeC, it is all engine code. However, the CSQC functions allow quick examination of how to minimally get a certain result.

For instance, DarkPlaces supports font color codes and unicode. I don't need to try to determine how to get the length of these strings, CSQC has functions to do those, which is a quick reference. The length of the string is different than the rendering width of a string (on-screen size), likewise the CSQC functions are a reference.

The source code for DarkPlaces has its own wide toolset, and used steadily over the years by heavy use in Xonotic.

April 19: DarkPlaces Game Startup Fix

In next version of Zircon: Thanks to some experimentation and insight, jakub1 helped zero in on rare issue that affects DarkPlaces where some entities are solid to projectiles when they should not be.

web block2Pictured: I have Visual Studio running Zircon in debug mode, a web browser with 20 tabs opened and video capture software running so that I could record this bug before enabling the fix.

The next Zircon has this fixed. (I also documented shared the fix at DarkPlaces github).

I would classify this issue as very non-obvious and file it in the "difficult to understand/identify category".

When jakub1 said he experienced the issue, while I started it up and everything worked fine -- I knew there was an issue, but it didn't happen for me so wasn't sure what to do exactly.

Jakub1 did some experimentation and managed to identify deleting a certain file (quake.rc) actually fixed the issue, I compared versus a typical quake.rc and looked through the engine code and located how this difference could adversely affect DarkPlaces startup.

April 19: Developer Info

In the last month or so, there were new Zircon console commands that exposed shader information and other information. Those console tools were laying the foundation for "actual plan" (console commands are nice, but a graphical user interface is living the high life).

devinfoPictured: Some very early ground-breaking activities.

Now that the DarkPlaces TrueType support more malleable for general usage in the engine code and the ability to embed data (icons, etc.), the real terraforming phase can occur.

Quite a bit of work ahead .. this where the real fun starts!

April 18: Font Battle Concluded

Adding loading pak/pk3 from memory proved to be too much work. DarkPlaces is super-hardwired for using file handles to read data. However, there is a"selfpack" feature already written. I looked at the code and wasn't able to figure out how it worked, then I took a guess and did "copy /B zircon_beta_gcc.exe + bundle.zip zircon_beta_gcc2.exe" (this concatenates a .zip file to the end of the zircon exe -- a .zip file and a .pk3 file are the same thing) and it worked, activating the self pack feature.

The desired result was achieved, but in a different way.

A Waterfall Investigation.

The work invested in TrueType fonts from memory proved to be what was needed, I am loading the fonts outside the DarkPlaces traditional font system and I don't want the data somehow cleared by a user or some DarkPlaces mod that does something I hadn't considered.

April 17: TrueType Fonts

I have been rewiring Zircon to use TrueType fonts from memory (done). Realized what I actually want is to load pak files from memory. The pak/pk3 system in DarkPlaces doesn't support that, and I didn't really want to code that.

After carefully considering the various options, coding "loading pak from memory" has enough advantages that it is worth it. "Didn't really want to code that" ---> Coding that. Such is engine coding ...

This one has a fantastic payoff though.

Investigating Spiderwebs and Waterfalls

April 15: Fixing Cvar System

The cvar system in Zircon Beta is not perfect and started with the DarkPlaces Beta version -- which at time of the origin of Zircon Beta (October) would crash on gamedir change, I had change some things to fix it and under some circumstances it can be untrustworthy. And it is overly complex for the simple thing it is doing.

warp

No visible reward for fixing it, but gamedir switching is important and I want to fully trust it.

DarkPlaces allows cvar creation, cvar destruction and can use the fteqcc "autocvar_" feature -- amongst many other things. I'm going to see if I can get the code to collapse into simplicity, while having it do exactly the same thing.

Engine coding sometimes involves working on things with no visible results. Comes with the territory.

April 14: Console Selection In #49

I wanted to copy some text off the console and less than the what the Zircon "copy" console command does -- which is the whole console. But that wasn't a feature.

It wasn't the first time I wished Zircon had that as a feature. It was, however, the last time.

copier

Because of the way DarkPlaces does the console -- the console in DarkPlaces is very nice but so very complex, this was crazy hard to do. Sometimes it wraps lines, many lines simply don't display because they are tagged "developer 1". There were other obstacles.

The joy of copying text from the console made this worthwhile! It selects entire rows, dodging TrueType font support variable width considerations and such.

April 13: Console Selection

Mouse highlighting/selecting/copying console text is coming in next version. DarkPlaces has a quite a few features in the console log that are great, but make this a bit complicated to code. For example, one really great feature in DarkPlaces is "developer 1" suddenly reveals previous messages, it stores a "mask level" for each line of console print.

April 12: Texture Filtering Cvar

See notes in the description, but most noticeable change is Options->Change Video Mode has texture filtering setting and it saves to config. ALT-ENTER timer limiter is removed ..

wall

Options->Change Video Mode -> click Texture Filtering -> Set Nearest -> Then Go Stare at a wall


ALT-ENTER timer is removed .. in the past during map change Zircon could crash under circumstances that were not entirely clear if done during map change -- this seems to no longer happen (right? right ... ? /Is Keeping eye on that).

There are larger changes that will require a demonstration mod to see.

Rain and Sprinklers Materials Map (Download: Zircon Beta #47 Win/Linux)

GremlinForester made an incredible materials test map. He has been sharing insight on ideas on how to add some flexible options to the DarkPlaces shader system (in the coming days, I intend to be coding those). GremlinForester's notes/credits are in the download full description.

Download the map! (download: test_mat2_dp)

Put pk3 in quake\id1 folder. Type "map test_mat2_dp". Enjoy!

mattest2 rain1

In Zircon, goto Options->Effects and use Level 4 or higher for full effect.
mattest2 move


mattest2 sprinkler2


Zircon Release 44 - More Effects/Video/Linux/User Interface - Much More To Come

Zircon Release 44 - More Effects/Video/Linux/User Interface - Much More To Come

News

Zircon #44 has improved video cutscene support, a graphical mouse-driven menu with screenshots for load games, new graphical effect capabilities (and...

2024 Quake Omega Effects Challenge Series #1 of 20

2024 Quake Omega Effects Challenge Series #1 of 20

News

2024 Quake Omega Effects Challenge Series #1 of 20 is the Intermap Travel Demo now available for download.

Zero Ping Movement Version 1 (Quake Re-Release Support Improved)

Zero Ping Movement Version 1 (Quake Re-Release Support Improved)

News 2 comments

Discussion of Zero Ping Movement Version 1 -- this is a movement mode available in Zircon that allows smooth gameplay with incredibly bad connections...

December Lab Report #12 of 12 - Journey Onward

December Lab Report #12 of 12 - Journey Onward

News

The Year Of Our Lord 2024. A discussion of probable upcoming topics. The age of engine stabilization has come to a close, a shift towards using the engine...

Add file RSS Files
Zircon Beta engine source 20240427 WIP

Zircon Beta engine source 20240427 WIP

Source Code

Largely completed source code for a future release. Amongst changes: "SMEJ2" single player startup fix resolving sometimes "solid cobwebs". Detection/handling...

Zircon Beta Release #49 🔥 (Win64 binary, source)

Zircon Beta Release #49 🔥 (Win64 binary, source)

Full Version

Console text selection with mouse, press CTRL-C afterwards to copy to clipboard. More in readme.

Zircon Beta Release #48 (Win64 binary, source)

Zircon Beta Release #48 (Win64 binary, source)

Full Version

gl_texturemode is the menu. ALT-ENTER fullscreen/windowed mode timer removed (it used to make you wait a second after map change) -- it not appear this...

Zircon Beta Release #47 🔥 (Win64 + Linux binaries, source)

Zircon Beta Release #47 🔥 (Win64 + Linux binaries, source)

Full Version

Quake Combat+/Quake 1.5 issue with crash resolved -- Quake Combat+/Quake 1.5 perform autosaves very early in level load, Zircon was accessing rendering...

Zircon Beta Release #46 (Win64 + Linux binaries, source)

Zircon Beta Release #46 (Win64 + Linux binaries, source)

Full Version

USE #45 - Received Bug Report For QuakeCombat Plus Crash. Investigation underway ... Q3 shader "framemap" can make Quake-like buttons where pressing the...

Zircon Beta Release #45 (Win64 + Linux binaries, source)

Zircon Beta Release #45 (Win64 + Linux binaries, source)

Full Version

Fixed small cosmetic issue with cursor in options menu at certain resolutions. Improvements in Load Game menu (it is now sortable), maps menu and server...

Post comment Comments  (0 - 10 of 123)
grabeskuehle
grabeskuehle - - 102 comments

What is the main goal of Zircon?

I am asking because i am curious if Zircon also has features for new standalone games in scope.

For example some new qc builtins, better compatility with fte's csqc.
Or new file formats, renderer api, fixing ode support or similar things?

Reply Good karma Bad karma+3 votes
Baker55 Creator
Baker55 - - 250 comments

For now ...

Trying to get the engine to expose current DarkPlaces capabilities and do a better job of playing Quake.

And trying to expose some of those, while getting the engine to do a better job.

Add: I don't quite know the answer to the standalone games part ... because Zircon does support total conversions better than DarkPlaces because it was extended (KleskBY provided some of the ideas to improve it) ... see Rite of Reckoning or QUALKER ... a gamedir with ONLY a "data" folder .. Zircon will assume total conversion if no Quake data found .. so Rite of Reckoning below, was easier for KleskBY to put together (no batch file and no command line needed, engine-based total conversion detection).

Reckoning: Moddb.com

QUALKER: Moddb.com

(Yet I want it to do more ..)

Reply Good karma+3 votes
Hebi_Hayaki
Hebi_Hayaki - - 104 comments

Hi, I cannot run Quake Combat+ with zircon_gcc.exe in lastest version. Can you upgrade zircon.exe?

Reply Good karma Bad karma+2 votes
Baker55 Creator
Baker55 - - 250 comments

I did several tests and deleted my config and started QuakeCombatPlus and one of the times, it failed to startup and just crashed out.

Thank you for reporting this!

NOTE: I can have a hard time getting it to crash, the following replicates the crash every time --> no config.cfg in id1, no config.cfg in quakecombatplus folder ... start with zircon.exe -game quakecombatplus -> Single Player -> New Game -> crash.

Reply Good karma+1 vote
Baker55 Creator
Baker55 - - 250 comments

Started up fine for me. Doing more tests.

I started both from the command line and from Quake by doing "game quakecombatplus". Both worked fine.

Anything special about your setup? Is there an error message or what happens?

Please let me know!

Meanwhile, I'm going install from the download.zip and make sure that is ok.

(Just reinstalled zircon from the latest download #46, QuakeCombatPlus starts up fine for me).

What happens when you try to start it up?

Reply Good karma+1 vote
Baker55 Creator
Baker55 - - 250 comments

I'll investigate that ASAP.

Reply Good karma+1 vote
Hebi_Hayaki
Hebi_Hayaki - - 104 comments

Thank you for the update, now it's work.

Reply Good karma Bad karma+2 votes
Baker55 Creator
Baker55 - - 250 comments

Excellent!

Reply Good karma+1 vote
Tireheb666
Tireheb666 - - 6 comments

This engines improves more the time passes: everyday something cool! If I can suggest some features:

- Make console bind of \ by default since everytime players have to edit the .config file

- Is the command gl_texturemode "gl_nearest_mipmap_linear" gone? The one to display a more pixelated look, more or less like the Quake Remastered

- Some people would classify this as "stealing an idea" but what about making a mod menu like in Ironwail? IMO is the best

- Does this engine supports all custom bsp and mods released til today? Does it supports Mjolnir, Alkaline, all Arcane Dimensions maps etc...?

Reply Good karma Bad karma+3 votes
Baker55 Creator
Baker55 - - 250 comments

I made setting the texture filter easier and put it in Options->Change Video Mode so it is easily accessible. It also saves to config now.

Reply Good karma+1 vote
Baker55 Creator
Baker55 - - 250 comments

Hey Tireheb666, thank you for the feedback!

> Make console bind of \ by default

I actually use that "/" (the other thing of slash) for toggleconsole, however, it isn't the function of an engine to be deciding default keys really.

> GL_NEAREST_MIPMAP_LINEAR

typing gl_texturemode GL_NEAREST_MIPMAP_LINEAR in the console works, the GL_NEAREST will autocomplete pressing tab or Ctrl-Space.

> mod menu like in Ironwail

Going to put something similar to the Quake Injector discretely inside the menu that feeds from Quaddicted but is not necessarily restricted exclusively to Quaddicted.

I've already done testing downloading and examining the Quake Injector .xml inside the engine, but haven't written the parser yet and the Quake Injector .xml file contains some unicode characters ...

This is probably a few weeks out ...

> Does this engine supports all custom bsp and mods released til today?"

Short answer: No. But in the future, it will keep getting better.

DarkPlaces can mostly play most single player maps and mods, Zircon does a better job at that than DarkPlaces due to user feedback and then acting on the ones that could be dealt with -- Zircon probably has 50+ improvements in compatibility over DarkPlaces (examples: correctly doing fog and .alpha support for static entities and support for fence texture .mdl flags 16384 and unloading csqc it doesn't support like for Alkaline and the ability to play the Quake ReRelease and DarkPlaces 2014/2017 has serious items dropping out of maps issues with some maps --- like bye bye silver key -- Zircon has largely eliminated that as an issue although timing differences in events can still cause incompatibilities with vanilla Quake occasionally).

However, Zircon is still not fully compatible with all single player releases and mods. It edges closer as time progresses.

Eventually it probably will be the case, because that is something important.

Reply Good karma+1 vote
_jakub1_
_jakub1_ - - 42 comments

to Tireheb666:

There are like 10-15 maps in various mods that are bugged or wont load at all. 99% of mods/levels work just fine with zircon.

Reply Good karma Bad karma+2 votes
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account:

X