Archive for the ‘Development’ Category

Development Diary – Screenshot Fever

Posted on April 21st, 2009 in Development | No Comments »

I think it’s time we started filling this blog with interesting stuff like development updates, screenshots, ideas, and anything related to the projects we have under the hood. Namely TidalEngine and Project Utopia for the moment.

What better way to start than to post some screenshots? :) It’s screenshot-fever over here at TidalWare. We can’t stop taking them. Still, not much has changed on the graphics front since we implemented 3D ocean technology. But it’s always nice to tweak things and show the engine from a different perspective.

projectutopia_blog_s2 projectutopia_blog_s1

The avatar you see here is Mr. Roboto. He’s our crash test dummy for now. Since we have no real artists working on the project, it has to make do! It’s not easy for us programmers to make things look visually attractive, we are simply displaying the sheer power of our engine! Just imagine how things will look with real 3D art!

You may be wondering “what happened to night time?” – well, for a start it’s not easy to see a screenshot at night time. It’s also a cheat so we don’t reveal that the terrain doesn’t actually have dynamic lighting yet. We’ve put it off for now, since a new system is in the works by the Ogre Team. So right now, despite it being very advanced and capable of supporting an unlimited landscape, in the meantime the ground looks visually poor.

“Show us some video!”, I hear you screaming. We’re working on it! Us ourselves are desperate to pull together a video, but unfortunately there’s a few things we need to sort out first – bugs and the like. Dynamic light-mapping on the terrain is one thing, there’s also a couple of issues with the foliage and 3D ocean that you don’t see in the screenshots. Plus we really want to get our dynamic weather system spic and span. Trust me, it will be worth the wait. There’s 3D environmental sounds, the clouds move across the sky, the foliage waves in the wind, the 3D ocean has dynamic waves and caustics, all of which you don’t see in the screenshots.

There’s also a lot going on in the backend that you don’t see. The sky, the foliage, the water, the terrain, the objects, the avatar – it’s all being streamed live from one of our server applications. It’s just the sad reality that people tend to be more impressed with fancy graphics, so that’s what we tend to showcase. More details on the server architecture in a future post.

That’s it for this development post, hopefully it has cleared a few things up on the graphics front. We’ll try our best to roll out one of these posts on a regular basis, but don’t expect reems of new stuff to talk about. Some of the things we do are kept quiet for obvious reasons; and don’t forget the boring stuff nobody cares about. :)

Develop Commercial Quality Games at Zero Cost

Posted on February 27th, 2009 in Development | 1 Comment »

At TidalWare, we have not spent a single penny on production tools. Not because we are cheapskates, but because we have no need to satisfy a corporate ego that leads companies into spending thousands, even hundreds of thousands on commercial tools. It is common for companies to think that quality = money. While this may be true in many cases, the amount of investment ploughed into fancy software could be better spent in other areas of the production process.

Today, the line between commercial and free in terms of software is narrowing drastically. The introduction of open source has lead to many quality projects being produced as a result of community effort. At the end of the day, it’s the consumer that will use the software. To have the consumer develop the very software that they use leads to productive and user-friendly tools. Even you can contribute to its development. Commercial software is developed behind closed doors, and its functionality stems from a company’s own priorities. You have little to no say as to what goes into the software, and you end up waiting for new, single large releases that you can only hope has the features you want.

The use of open source software in the commercial world has grown significantly in recent years as companies realise its benefits. However, even today the number of game development businesses large or small embracing open source technology is minimal. Most continue to reinvent the wheel, developing proprietary tools that often already exist. Today, with all the technology readily available there is no excuse for neglecting areas of your game due to time wasted on unnecessary development.

So, what tools are currently available that allow for free development? Well, below is a list of some of the free and commercial quality tools, software and libraries that we recommend for game development.

Tools

Compilers

We recommend:
Visual Studio Express – Visual Studio is the most widely used compiler for games development. It’s reliable, and has everything you need to compile your application, including unparalleled debugging and streamlined programming. While the commercial version offers more bang and titivation, Visual Studio Express has everything you need to compile and debug your game.
Code::Blocks – Our recommended choice for cross-platform development. It’s solid, has plenty of great features, is customizable, and can integrate with any number of compile types from MingGW to GCC.

3D Modelers

We recommend:
Blender 3D – Blender is fast approaching the standard of commercial tools, and studios are beginning to consider Blender as a serious option for art production.

2D Graphics

We recommend:
GIMP – The best free graphics package. An alternative to Adobe Photoshop.

Animation

CharacterFX
Pacemaker

C++ Libraries

Graphics

We recommend:
Ogre3D – In our eyes, the number one free graphics engine. Many commercial games have been produced with Ogre3D. It has an intuitive interface, workflow and a fantastic community with many child projects which are also open source.

Other:
Irrlicht
Crystal Space – Rendering engine used in Blender 3D.

Physics

We recommend:
ODE – ODE is an open source high performance physics engine for rigid body dynamics. We found it great for simulating vehicles.
Newton – Newton, while not being open source, is robust and has all the features you would ever need for physics in games.
Bullet – Reasonably new physics library with a rapid development speed. Used for physics in Blender 3D.
PhysX – Free for non-commercial use. This is a commercial-quality physics engine that is great if you don’t plan to sell your game. Requires a redistributable package.

Networking

We recommend:
RakNet – High level networking library with many out-of-the-box features for networking in games.
cURL – File transfer library.

Other:
ENet – A very lightweight UDP network library.
OpenTNL – Another high level network library.

Audio

We recommend:
OpenAL – Low level cross-platform audio featuring 3D sound and more.
Ogg Vorbis – A free quality audio filetype.

Input

We recommend:
OIS – A lightweight, cross-platform input library.
SDL – SDL is a heavy cross-platform input library.

GUI

We recommend:
CEGUI – A free graphics library providing a windowing and widgets API for in-game.
wxWidgets – A cross-platform GUI library for developing software. Create editors for your games without MFC.

Other

We recommend:
Boost – Hundreds of portable C++ source libraries.
TinyXML – A small but powerful XML library.

Project Utopia Screenshots & Game Republic Event

Posted on December 13th, 2008 in Development, General | No Comments »

Well, it’s been quite a while since my last post. Let me jump straight into saying that I have added two new teaser screenshots of our new game codenamed ‘Project Utopia’ on the homepage. I simply couldn’t resist. :) I’ve been working on the game only since June, pretty much by myself while concurrently steaming away at Project Velocity. As explained in the description on our website, it’s a huge undertaking. Developing a MMORPG is pretty much the most difficult piece of software engineering. Crazy? Probably. Achievable? Definitely.

We have huge plans for PU (I’m thinking I shouldn’t use that acronym). It has required many dozens of plans and documents to explain its direction. Unfortunately I’m not going to reveal too much at this moment, but maybe a little more than you already know. There’s one thing I’d like to clear up, however. It is NOT a pretty fantasy/medieval turn-based RPG. I could count all the grass blades in my sight and the amount of games in such genre will still outnumber them. Project Utopia will be a futuristic game with nothing more than what is scientifically possible. You won’t be playing humans, either.

That’s enough for now. ;) I’ll reveal more as time progresses. Not to alienate your hopes (NPI), but Project Utopia is still in very early stages. The screenshots may look nice, but graphics are only a tiny fraction of the battle. Also, progress will be extremely slow unless we can find more people. Even then, I’m not working on it full time. What will see the project to its finish is our sheer amount of determination.

On a different note, I’d like to remind everyone about the next Game Republic event. It will be held in Leeds on the 12th of January, the subject being “The future of AI”. Unless my plans get screwed somehow, I will be attending the event. So if you’re into that kind of stuff and live in Yorkshire, I recommend you pop along and check it out. More details to follow.

Tide Engine

Posted on November 16th, 2008 in Development | No Comments »

Slowly but surely I am hacking away at a 3D engine for TidalWare. I started it just under a year ago as a personal project, originally named OGLE (OpenGL Engine). Recently I’ve been working non-stop, trying to bring it to a useable state. I heavily underestimated the difficulty of writing a well designed, sustainable engine.

I had a browse around the web to see if I could find any inspiration; after all, there are 3D OpenGL engines all over the place. I came across a few very nice engines, from personal projects to student finals. The features and visuals of these engines seemed astounding – XML shader system, dynamic water, static geometry, vertex buffers. Great. But, take a look at the source code and ouch. Hacky and GL-specific code everywhere. It’s as if they continued to add bits here and there without any particular structure.

Bad design is easy to implement in the short-term, but as for extending it in the long-term, well, it could turn into a bit of a nightmare. On the other hand, good design is painful at first, but once you’ve got the ball rolling you soon realise that it was the best decision you could have possibly made. I’ve opted for the latter.

Unfortunately that means I can’t add any juicy features until a solid framework is implemented.

Here is a lowdown of the current features:

  • Window creation, management and events
  • Camera with frustum
  • Viewport
  • Scene components
  • Abstracted OpenGL 2 with version 3 placeholder
  • Math functions: Vector4, Vector3, Vector2, Matrix4, Matrix3, Quaternion, Sphere, Plane, Ray, Colour, Box
  • Utilities: Logger, Exceptions, Timer
  • Occlusion query
  • Temporary fixed-function lighting and fog
Screenshot of TIDE

Screenshot of TIDE in its infancy.

Pretty basic stuff, and I know you’re thinking “what has taken him so long?” Well, apart from the fact that I’m the only one working on it, you’d be suprised at just how complicated it is to implement the core functionality. The engine is already beastly with over 30k lines of code. However, now that the basics are in, it is now very simple to add new features. It’s component-based design means that I can drop in a new class without changing much at all.

There is still a huge amount of work to do, however. It has no texture support, no materials, no model loading, no scene graph, no resource management and no shaders. Admittedly, some of those features will mean a number of framework changes. The first three especially will be a bumpy ride. But nevertheless, my good design decision will help immensely.