Jump to content
Entries in this blog
Leadwerks.com is now hosted on our own dedicated server located in Chicago, Illinois. It was found that this location gave the best overall results for our worldwide user base. We tested the new server in advance for a couple of days, and transferred the database right before switching the DNS, so no data should have been lost. Please submit a bug report if you experience any problems.
The Leadwerks server has a 500 gb secondary hard drive where site backups are automatically saved to, in addition to the manual backups I perform. The main site database is being downloaded manually every 3 days and saved on a 2 terabyte hard drive. Additionally, the databases are being uploaded to another remote server. Once a month the entire site will be downloaded (individual files) and burned onto several DVDs, as the ultimate fail-safe. Leadwerks.com and Werkspace are a website for you, the Leadwerks community. We will go to any lengths necessary to make sure your data is safe and protected.
We also have a new version of the website skin with an added search bar, visual improvements, and bug fixes. I'll be fixing up parts of the site and adding the documentation system back in, so keep an eye out for that.
Thanks to WiredTree and Invision Power Services technical support teams for their great support, and to Tom Christian for his work with the website skin.
First, so you don't have to read through all my rambling, the website database is set back to November 2010, and there is no way around it.
I was working with the forum software on Sunday, 4-17, and I was just very pleased with how things were working. I saw there was an update for the bug tracker application, and the change list just mentioned some bug fixes, so I felt okay installing it. The new version removed custom issue fields, which we use extensively for listing hardware, drivers, operating systems, etc.
It's not very easy to revert to previous software versions. I had performed a full website backup earlier that day, so I figured the best way to revert the tracker app would just be to have the IT admin revert the server to the backup I had made. I'd downloaded it to my local hard drive and it was intact, and also still available on the server. I also had an earlier full website backup I made on April 2. I figured this would be a minor inconvenience that would take the forum offline for a few hours.
Here's the interface in CPanel:
I also talked to the IT admin and they assured me that the full website backup does includes MySQL databases. I sent the following message to them Sunday afternoon:
My caution in this email might indicate I had a suspicion something was wrong. Did I somehow know something would go wrong? Should I have? This thought is nagging me right now.
I've been on the phone with tech support for a couple days, but you don't need the whole story. The outcome is the server was erased and repopulated with the contents of the backup archive. All files were intact, but the databases were not saved when the backup was performed. The previous backup I had was from April 2, which would not be a terrible loss. It appears the same occurred then. In fact, since I have been dutifully saving full website backups since November, thinking I was making extra effort to be on the safe side, the databases were never being saved in the archive. So the last copy of the forum database I have is from November 2010. I've been quite diligent with backing the site up, but that doesn't mean anything if the backups aren't working. The host automatically backs up sites under 10 gb every 24-36 hours, but that size excludes us.
Although it was easy to bring the forum software up to date, all forum data since November 2010 is gone forever. The loss of this is staggering. To me, and to others here.
You can get your screenshots here in a single package. They're randomly named, but if you really need something you can find it, and it's divided up by month:
I still have all the attached files from posts, blogs, downloads, etc., but they are randomly named and I don't know how possible it is to go through them.
The thing that really hurts is the lost documentation that was created after November. That's going to take time to recover from. We'll recover, but the loss is still sinking in for me. Jorn worked really hard on that at a reasonable pay rate and I feel really bad about it.
I have records of all registered users. If you registered for your Leadwerks account after November of 2010, your account will be recreated and your password will be set to your registration key you received.
The wiki and old forum are fine.
The new forum skin is fine, but not installed at the moment.
This must never happen again.
First, a better backup protocol is needed. The most important thing is that the backups actually be valid backups. Obviously, I've learned that MySQL databases must be backed up individually and that a full website backup from CPanel is not reliable. Data is saved to a 2 TB external hard drive. Additionally, I am opening a safe deposit box where code and site data are regular deposited. I already thought I was doing everything right, so at this point I feel like I can't be too careful.
Second, I am locking the forum software at the current versions, unless a critical vulnerability is discovered. In 2009, all we had was an installation of PHPBB. The idea for Werkspace was something Annika came up with and gradually sold me on. We listed all the features we wanted and found forum software that would allow it. Customizing the look and feel of the software to fit in with the theme of Leadwerks was a long process, but we finally got a suitable skin made. I am satisfied with the features and functionality of the system, and now we can just leave it be, indefinitely. The data loss does not affect the skin we had developed. The skin will continue to get minor improvements, but those kind of changes are easily performed and rolled back, if need be.
Third, semi-annual tests are needed to make sure data can be restored successfully to a test server. Backups don't help if you wait until you need them to find out they don't work. A test server will be used to install the latest backup on every six months, or before any restoration takes place. Maybe this is overkill, but nothing was supposed to go wrong before, and we found out otherwise.
It seems redundant to say I'm sorry about this occurrence. I know we'll get back to normal, but it hurts pretty bad. The key point is my data backup technique was flawed, so all the backups I've been performing were worthless.
Frictional Games is the developer of puzzle horror games like Penumbra and the new Amnesia: The Dark Descent. We sat down with Frictional Games co-founder Thomas Grip to learn more about their development process.
Josh: I'm a big fan of the Penumbra series. What can we look forward to in Amnesia: The Dark Descent?
Thomas Grip: There is a lot to of new stuff in the game. First of all the game is a more streamlined experience both in terms of general gameplay and interaction. For the gameplay we have made sure that the focus is always on atmosphere and story, and made sure that the player is never stuck at a puzzle for too long and stuff like that. One of the ways we do this is to allow multiple solutions so it always feels intuitive to the player.
In terms of interaction, it is much easier to interact now. In Penumbra it could be a pain to open doors at times because you needed to click on the right spot and so on. In Amnesia all that is fixed and it is now possible to easily slam shut a door in the face of an enemy and things like that.
There is also a new insanity system, a fresh environment, and new story.
Josh: Can you talk about the process of developing an idea and turning it into a full-fledged game? Do you start with a design document or just start writing code? How closely does your final game resemble what you originally imagined?
Thomas Grip: This time we had a very long iteration period where we tested out various ideas. We actually first had a bite-sized horror design inspired by Super Mario. It was intended to have small self-contained levels and to be played in shorter bursts. It did not fall out too well and we tried tons of stuff before settling where the final game is.
In the early iterations we started out with a "fun" mechanic and tried to base a game on that, but as I said, it did not turn out good. Instead we started focusing on the themes and general feel of the game. Then we started building minimal mechanics to support that. To do this we took a lot from Penumbra, as we knew how it worked, and refined it.
Once we had the general feel going 1/3 or so is drawn up on paper and we started making maps based on that, then as maps are made we continue to design the remaining 2/3 on paper taking cues from the maps being built. These written paper designs are often very close to the full game and that is a way for us to be able to plan ahead very accurately. Early on we knew around 90% of the assets that we needed, which is great when outsourcing. Then in the final steps the maps get polished and we play them over and over and try to build up the feel we are after. If something does not work out, we often scrap it instead of rebuilding it.
Josh: Towards the end of the first Penumbra game, you communicated with a major character over an intercom system. The character never actually appeared on screen, but the emotional connection was established using voice acting. This struck me as a good design decision, because you were able to eliminate all the trouble of making an animated character speak in a convincing cut scene, without detracting from the player's experience. Are there any other examples like that where you made design decisions that helped streamline production, so you could focus on the core gameplay?
Thomas Grip: There is a lot of that stuff in Amnesia. For example, there is one character without a lower jaw, which removed the need to do lip-sync. When it comes to visions we only use sound (without models, like in System Shock 2), which in turn also gives the game a more spooky feel. I think having these kinds of constraints also forces you to use your imagination more and not just follow the design of other games. Although it is a bit annoying not being able to do certain stuff, it often turns out positive for us.
Josh: What's next for Frictional Games?
Thomas Grip: Rest! And tech support... And then we have to see how sales and so go! We have an interesting idea we would like to pursue, but it depends a bit on how we do financially.
Check out Amnesia: The Dark Descent for creepy thrills and inspiring game design.
The Rocks and Stones Model Pack by Pure3D is now available here:
You can also still get the Industrial Cargo Model Pack for the low introductory price of just $9.95 until Monday, September 6, before the price goes up:
The Industrial Cargo Model Pack is now available for only $9.95. This package includes three cargo containers and two wooden spools. All assets are certified game-ready for Leadwerks Engine. This is just some of Dave Lee's work, and there's lots more coming!
Leadwerks Engine 2.32 is now available.
-"Render" Lua object function renamed to "Draw".
-Added Draw entity callback.
-Entity draw callback and Lua "Draw" object function will only be called at most once per frame. Perform animation in this function.
-Entity LOD distance parameters changed for better performance.
-LoadAnimation now works without exact hierarchy matches, so LOD meshes can all use the full-res animation.
-Implemented entity octree with hierarchical culling and picking.
-Rewrote vegetation rendering routine.
-Added vegetation collision.
-Added optional terrain color map.
-Fixed some problems that prevented custom buffers from working.
-Fixed render elements bug.
-Fixed camera culling bug.
-Fixed recursive AABB update bug.
-Fixed surface save bug.
-Adjusted bloom and SSAO shaders.
-Eliminated unnecessary pick filter calls.
Pure3D has launched their realtime division for producing high-quality real-time assets ready to use in Leadwerks Engine. The first vegetation model set Groundplants 1.x is now available. It features 20 digital vegetation and foliage models. More file formats and engines will follow. This pack is available at a special introductory price of only €19. You can browse the contents of the pack in this pdf file.
Leadwerks Engine SDK 2.31 is now available. A new SDK installer in the download area allows you to download different versions of the SDK. You must have an activated Leadwerks account to download the new SDK installer.
New features include lighting optimizations for point and spot lights. You can read about this feature in detail here. Another new feature is character controller crouching behavior. Note that the origin of character controllers has been moved to the very bottom of the controller, instead of the vertical center. In addition, particle emitters will now store the particle velocity in the first texture coordinate array of the surface. This allows the implementation of directional particles, for elongated sparks or other non-circular particles.
Shadow updating can be a bottleneck in rendering. To make matters worse, point lights require a total of six passes when its shadow is refreshed. We solved this problem by only redrawing shadows of objects that moved. The shadow is then combined with the rest of the cached shadow buffer, to make the final shadow map. The net result is fully dynamic point light shadows using a proper six-sided shadow map, with less rendering cost and better quality than dual parabolic shadow maps.
Leadwerks Engine 2.3 has been released. This major update includes a new editor, Lua script integration, forest rendering, roads, and more.
Lua Script Integration: Write object scripts and write your game in any programming language, or you can write your entire game in Lua.
New Editor: Leadwerks Editor is our new tool for creating enormous terrains, placing objects, and creating worlds. You can even edit scripts and see the results instantly.
Forest Rendering: An advanced new rendering algorithm makes it possible to render hundreds of thousands of trees and plants, at playable framerates. Make dense forests that stretch for miles.
Roads: Build spline-based roads and paths in the editor. Roads can branch, stretch, and fade out. You can even go for a drive on your highways and byways in the editor.
Terrain Holes: Remove patches of terrain and go underground with caves and bunkers. This feature brings a new subterranean dimension to your games.
High Dynamic Range (HDR): Brights are brighter, and darkness is darker. High dynamic range allows a greater range of color to be displayed, with automatic iris adjustment to correct for the ambient lighting environment.
Animation Improvements: Characters can have up to 256 bones, with fast hardware skinning performed on the graphics card.
Rendering Framework: It's easy to toggle advanced effects on and off, in any combination, with commands like SetBloom() and SetHDR().
Like many programmers, I used to consider scripting languages to be a "toy": They are nice and easy to use, but ultimately I thought it was just programming for people who don't want to install Visual Studio. I started playing with Lua back in June of 2009, and the potential for this wonderful language quickly became apparent. Our integration of Lua allows script to be written on both a global and per-object basis; You can write your entire program in Lua, like you would with C++ or another language, or you can write a script specifically for one object class, with different predefined functions to be called during the program. There are functions that can be called when an object hits something, when it is created, or once every frame to update the object. Object scripts can be used together with C++ or another programming language. This means that anyone who uses Leadwerks Engine, with any language, can download a scripted object, drop it into their program, and have the same behavior working in their own game. The implications of this are immense.
Suddenly we found that instead of being a collection of a few hundred individual programmers, the community suddenly became a collaborative, collective group. If one developer writes a script for a scary monster and posts it online, another user can download it, drop it into the editor, and see the results, with no code changes. You can even edit the script in Leadwerks Editor, save it, and instantly see the results. For the first time, developers could easily work together and share their creations, and still use whatever programming language they preferred. Lua has changed the whole feel of the community to a more social and cooperative group.
Keeping it Real-time
Our design philosophy for Leadwerks Engine is that everything should run in real-time, and thus be editable in real-time. Lighting and physics are already editable in real-time with instant feedback, but it took some time before I realized we can extend this approach to something else: programming. The new editor has an integrated script editor. To edit an object's script, you simply double-click on its node in the scene tree. You can view all the code that makes the object to whatever it is doing. You can also make changes to the script, save it, and the object's behavior is instantly updated! The lack of a compiling phase allows you to fine-tune behavior to get it just the way you want. Plus, it's a just lot of fun to use. For an in-depth description of our Lua implementation, see here:
The Road to Perfection
Roads look nice, but the reason I really like them is they allow new dimensions of gameplay. When I started off writing the road editor, I had a few requirements. I wanted the roads to be written entirely with Lua object scripts. This was a challenge, and forced me to add several features to the script integration to make it work. I also wanted roads that aligned perfectly to the terrain, like they do in Crysis. First I wrote the mesh generation routine that makes a spline-based road. This is fairly simple, but it is only part of the problem. The biggest challenge was slicing the road up by the terrain grid, so that every vertex on the road lined up along the terrain, and the whole road lay perfectly snug. UV mapping the tessellated road was another major challenge, but a clever solution was found after many attempts. The resulting roads look great and conform perfectly to the terrain. And they're fun to go driving on!
Seeing the Forest for the Trees
The forest rendering algorithm is my favorite new rendering feature. The bulk of this was written in the spring of last year, but there were a few details I didn't complete until recently. I spent hours playing with the Crysis editor and trying to figure out how they heck they were able to render so much foliage. I read article after article, but no one seemed to have a good approach. Most of the forum discussions on graphics development sites seemed to amount to just saying "use billboards". The problem is that rendering 100,000 billboards is still a major challenge. The solution was found by analyzing what format data the GPU will render most efficiently, and then working backwards to find a way to get the vegetation in that format. The solution is elegant, and seamless to the end user. There's no baking or pre-processing. You paint as many trees and plants on the terrain as you want, and it just works. I still have some more ideas to implement, like destructable trees and even better efficiency, but I am quite happy with how it turned out.
Finally, the evaluation kit for Leadwerks Engine 2.3 is released. Get it here. The evaluation kit allows saving and script editing for a period of 30 days. C/C++ programming is not possible with the evaluation kit. An NVidia GEForce 7000 or ATI Radeon 2000 series graphics card is required. An NVidia GEForce 8800 or ATI Radeon 3870 graphics card is recommended.