Monday, January 5, 2015

The RTS Creator Advantage

In the last 3 years, there's been an explosion of game engine options available for independent developers. Unity has climbed to the top as every independent developers wet dream, Leadwerks 3 has unleashed a new realm of graphics fidelity with their OpenGL 4 renderer and CryEngine and Unreal Engine have been made public for a low monthly fee.

With all of these options it can be difficult for developers to choose what tools will best accomplish their visionary goals, after all, you wouldn't use a screwdriver to pound a nail in.

It may seem obvious if you've researched anything about the niche RTS Creator provides, but in developing RTS Creator we were able to make the assumption that anyone using RTS Creator is making a Real Time Strategy game. For us this means we don't have to provide features that aren't applicable to RTS games, making the interface less complex and significantly focused on a purpose that's in line with the user.

The challenge in making the assumption the user is creating a Real Time Strategy game is finding the perfect balance of simplicity versus flexibility. Oversimplifying could remove the possibility of RTS Creator being capable of creating the game you want, but having too much flexibility could make things over complicated, confusing, and create an abundance of unnecessary additional work. By acquiring feedback, we've been able to understand what's most important to game creators and focus on the flexibility that matters without sacrificing the simplicity RTS Creator currently offers.

The biggest advantage is the massive framework RTS Creator exposes through its interface. Using any of the above-listed engines, if you're making a RTS game you'll need to write code that defines your games logic. RTS Creator provides that logic without the need to write any code, saving a significant amount of time.

With many new features on the horizon RTS Creator could easily be the number one choice for independent developers looking to create a Real-Time Strategy game. 

Monday, December 8, 2014

Official Release

We are excited to announce that RTS Creator has officiallybeen released! We encourage you to try the demo and preview the example game before purchasing.

In the coming months we will be focusing on several primary areas.

1.            Video Tutorial Series
The video tutorial series will cover the following topics
•             First Game
•             2D Game
•             3D Space Game
•             Particles
•             Structures, HUDs and Tech Trees
•             Resources
•             Artificial Intelligence

2.            Assets
Currently RTS Creator ships with 52 Units and Structures and 1 HUD. We hope to greatly expand upon the Assets RTS Creator ships with.

3.            Features
The features we'd like to add are too long to list here but we'll be posting them soon on our forum.

4.            Performance Optimizations
RTS Creator in its current state begins to bottleneck with around 250+ units. Performance optimization will focus on physics, rendering and add threading.

5.            Scripting
With the wide array of real time strategy games in existence today it's impossible to create an environment that will meet the needs of everyone without scripting. Scripting will enable users to add unique game behavior using the LUA scripting language.

6.            Multiplayer
LAN and Internet multiplayer will support up to 8 players per game.


We look forward to the journey ahead of ourselves and can't wait to play your Real Time Strategy game!

Sunday, June 22, 2014

RTS Creator Inspired

A focus that's received a lot of attention in the world of productivity has been motivation. What motivates people and how people are motivated in turn results in all of the worlds output. By boiling down motivation we can separate all types of motivation into 2 separate and opposing psychological sources.

"Away from" motivation are ideas and situations a person is trying to avoid. For example, you don't have a job, you're running out of money and you're unsure how you're going to continue to put food on the table. The fear of not surviving motivates you to get a job and ensure your survival. You're trying to get away from the idea of not being able to survive.


"Toward" motivation consist of ideas and situations you're trying to attain. If you have a game or software, and distinct vision that inspires your motivation, every time you work to attain this vision you're working towards an idea.


What I've found fundamentally instructive about these distinctions is the quality of output based upon the inspiration for our motivation. Another word choice for these opposing forces could be "Fear" versus "Inspiration."


RTS Creator was founded on Inspiration from day 1. Every day before I put code into the machine, I take the time to recognize what I'm doing and why I'm doing it. What's the vision for this software, why is this vision great? How do I want people to feel when they're using this software?


The feelings and ideas I get from asking these questions fuels excitement, and motivation.


I want to enable people to bring their ideas to life, to get excited about the new possibilities that are now at their finger tips; to experience the awesomeness of making a world of war that consists of factions and armies of their own imagination.


This is the inspiration RTS Creator was founded upon and I hope to inspire that same inspiration in the users of RTS Creator. 

Sunday, June 8, 2014

Gauging User Expectations

After posting RTS Creator on Steam’s Greenlight we received a lot of feedback, comments, and questions. This has helped us to gauge prospective expectations and what we can do to best meet these expectations.

The original idea of RTS Creator was to be a tool for players and gamers to create their very own Real Time Strategy game with no prior programming experience. The biggest challenge is creating a tool that is easy to use and can create a variety of games. It’s challenging because we’re essentially developing a software that competes for a median on two opposing ends of the spectrum; simplicity versus flexibility.

We've received a lot of input on what users plan to do with RTS Creator and have decided to integrate lua scripting into the engine. This addition will be available post initial release and will complement the engines capabilities by giving users the ability to produce any result they could possibly think of.


Scripting will enable users to create and trade features with other users and vastly extend RTS Creator’s core functionality. 

Sunday, March 2, 2014

Modern Graphics. A layman Explanation.

One of the most exciting topics and endeavors of discovery for me his been 3d graphics. When I first started RTS Creator I knew absolutely nothing about 3d math or OpenGL. And a little secret is that most independent game developers don't. Now days you don't need have to have a PHD in rocket science and an awkward obsession with low level graphics to create games. Instead you use a higher level set of functions that handles the mathematics and calls to the graphics card for you.

But how do these mysterious frameworks work?

3D models consist of triangles, and as graphic power increases so do the number of triangles in modern models. What does it take to define a model of triangles? A list of coordinates for each triangle corner and which 3 coordinates come together to make each triangle. Pretty simple right?

What makes modern graphics "modern" is how these triangles are processed. 5 years ago graphics were rendered through a process called the "Fixed Function" pipeline. With the fixed function pipeline all graphics card commands were made in the application. The problem came years after the fixed function pipeline was invented, when models became extraordinarily complex and AAA game studios began to demand more flexibility and power.

This gave birth to the "Programmable" pipeline, which actually replaces parts of the native OpenGL rendering pipeline with... whatever the developer writes!  This amounts to less OpenGL calls to the GPU, resulting in less overhead, and lots more flexibility as developers are able to write their own rendering equations.

To give a brief example of what you can do now that you couldn't do before here are some pictures.

Ambient Occlusion


Shadows


Normal Mapping

And the list continues.

You can see how these things come together to produce more realistic and modern graphics.

RTS Creator was initially developed with the fixed function pipeline. With lots of research and studying I was able to swap out the fixed function pipeline and replace it with the programmable pipeline. I then had to find lots of equations to modernize the rendering and introduce new features such as Screen Space Ambient Occlusion and Shadows.

To give you a little taste of the final result, here's the equation and "program" RTS Creator uses to render its graphics.

#version 120

uniform vec3 EntityColor;
uniform bool FullBright;

varying vec3 vertex_normal;
varying vec3 Position;


//SHADOW VARIABLES
uniform bool EnableShadow;
uniform sampler2DShadow ShadowMap;
uniform int ShadowMapSize;
varying vec4 ShadowCoord;
float xPixelOffset = 0.001;
float yPixelOffset = 0.001;
//SHADOW VARIABLES

//DIFFUSE
uniform bool EnableDiffuseMap;
uniform sampler2D texture_diffuse;
//DIFFUSE

//NORMAL MAPPING
uniform bool EnableNormalMap;
uniform sampler2D texture_normal;
varying vec3 ViewDir[7];
varying vec3 LightDir[7];
//NORMAL MAPPING


//LIGHTING
struct LightInfo {
                vec3 Position;
                vec3 Intensity;
                vec3 La;
                vec3 Ld;
                vec3 Ls;
};

struct MaterialInfo {
                vec3 Ka;
                vec3 Kd;
                vec3 Ks;
                float Shininess;
};
uniform int LightCount;
uniform LightInfo Lights[7];
uniform vec3 LightPositions[7];
uniform MaterialInfo Material;
//LIGHTING


vec3 refl( vec3 s, vec3 n)
{
                return -s + 2 * (dot(s,n)) * n;
                //return 2 * (dot(s,n))* n - s;
}

vec3 ads( int LightIndex )
{
                vec3 n = normalize(vertex_normal);
                vec3 s = normalize(Lights[LightIndex].Position - vec3(Position));
                vec3 v = normalize(vec3(-Position));
                vec3 h = refl(-s,n);//normalize(v+s);

                return Lights[LightIndex].Intensity * ((Lights[LightIndex].La * Material.Ka) + (Lights[LightIndex].Ld * Material.Kd) * max(dot(s,n),0.0) + (Lights[LightIndex].Ls * Material.Ks) * pow(max(dot(h,n),0.0),Material.Shininess));
}

vec3 adsn( vec3 norm, vec3 diffR, int LightIndex )
{
                vec3 n = normalize(norm);
                vec3 s = normalize(Lights[LightIndex].Position - vec3(Position));
                vec3 v = normalize(vec3(-Position));
                vec3 h = refl(-LightDir[LightIndex],norm);
                return Lights[LightIndex].Intensity * ((Lights[LightIndex].La * Material.Ka) + (Lights[LightIndex].Ld * Material.Kd) * max(dot(LightDir[LightIndex],n),0.0) + (Lights[LightIndex].Ls * Material.Ks) * pow(max(dot(h,ViewDir[LightIndex]),0.0),Material.Shininess));
}

float lookup( vec2 offSet)
{
                return shadow2DProj(ShadowMap, ShadowCoord + vec4(offSet.x * xPixelOffset * ShadowCoord.w, offSet.y * yPixelOffset * ShadowCoord.w, 0.000025, 0.0) ).w;
}

void main(void) {
               
                vec4 tex = vec4(0.0);
                if (EnableDiffuseMap)
                {
                                tex = texture2D(texture_diffuse, gl_TexCoord[0].st).rgba;
                } else {
                                tex = vec4(EntityColor.rgb,1.0);
                }

                vec3 lcolor = vec3(0.0);
                if (FullBright)
                {
                                lcolor = tex.rgb;
                } else {
                                if (EnableNormalMap)
                                {
                                                for( int i = 0; i < LightCount; i++ )
                                                                lcolor += adsn(texture2D(texture_normal, gl_TexCoord[0].st).rgb,tex.rgb,i);
                                } else {
                                                for( int i = 0; i < LightCount; i++ )
                                                                lcolor += ads(i);
                                }
                }             

               
                float shadow;
                if (EnableShadow)
                {             
                                // Avoid counter shadow
                                if (ShadowCoord.w > 1.0)
                                {
                                                float x,y;
                                                for (y = -1.5 ; y <=1.5 ; y+=0.50)
                                                                for (x = -1.5 ; x <=1.5 ; x+=0.50)
                                                                                shadow += lookup(vec2(x,y));
               
                                                shadow /= 64.0 ;              
                                }
                } else {
                                shadow = 0.8;
                }
               
                if (tex.a < 0.15)
                {
                                discard;
                } else {
                                gl_FragColor = ((shadow+0.2) * vec4(lcolor*tex.rgb,1.0));
                }

}

Saturday, December 7, 2013

Beta Release

It's been awhile since we've last posted a status update. The RTS Creator website is up and from here forward we'll be posting our dev progress here -

www.rtscreator.net

The beta has been officially released and can be downloaded here -

http://www.rtscreator.net/index.php?/files/file/4-rts-creator-beta/

3 years and 24 days ago we began developing RTS Creator. After 3 revisions and lots of research and rewrites we've finally reached a state of stability and functionality that allows anyone to create a Real Time Strategy game with no coding.

Thank you for all your support and we look forward to seeing you on the RTS Creator forums.

Friday, July 19, 2013

Final Preperations

We're down to the final preparations before the initial release of RTS Creator!

Right now we're packaging up resources such as models and images, and finishing the web site!

RTS Creator will include a sample game "Genesys" that includes lots of models, objects, obstacles, and weapons so you can start remixing and modifying a full game.

We'll also be posting our roadmap with our future plans and feature releases.





Tuesday, May 21, 2013

Beta Released!

RTS Creator Beta! Thank you all for the continued support. Please follow the link to the blog post where you can download RTS Creator beta.

Tuesday, May 14, 2013

RTS Creator First Game

At 12 years old, I was incredibly inspired by Command and Conquer to create my own Real Time Strategy game. I had absolutely no game development experience and was surprised by the lack of software and tools available specific to creating real time strategy games. 

A few years later I began learning how to program. I could not have been in for a bigger challenge. It takes awhile to learn how to program, it takes even longer to become good at programming. Of course, the first game I would try to create was an RTS Game. It was a sloppy ugly mess but the best I could do at the time.


RTS Creator has been in development for 3 years and undergone 7 revisions. The learning curve to produce a RTS game far exceeds that of the average person, and even if you have programming experience you're probably not going to get it right the first time.


After many years of wishing I had a product like this - I finally get to use it. We're creating our first game to eliminate any missing features and bugs we may run into. We then have a select few people that will beta test so we can knock out any bugs we may have missed.


We're looking to have our initial stable release May 20, 2013. We'll be revamping the site, there'll be a demo in the downloads section and the full version in the store. RTS Creator will cost $59.95.

Wednesday, February 27, 2013

9 And Counting Down

There are exactly 9 things left on our "to do" list before RTS Creator is "finished."

We've crammed a good number of features into the game creation tool and we believe it's a good starting point in order to asses what people like about it and what new features should be added.

This has been a 3 and a half year project and we're excited to see the light at the end of the tunnel. We plan on releasing RTS Creator at the end of March 2013, which will also include revamping the website to fully display the software's capabilities.

Even though we're releasing RTS Creator in the next month our plan is to continually make improvements and add features to make it a better product.


Tuesday, February 19, 2013

The Lean Startup Strategy

RTS Creator has been a 3 year work in progress and a much larger endeavor than we initially anticipated. We have been very rigorous in our development and testing techniques to ensure that every function and feature works flawlessly upon release.

This has been a great strategy to produce quality software though in retrospect it may be a great mistake.

With insights from the book "The Lean Startup" by Eric Ries we've decided to take a different approach from here till the release of RTS Creator.

Instead of spending many hours developing features that may not be used, we've decided to focus our efforts on just "finishing" RTS Creator. There may be some bugs, and there may be some missing features but in order to know if these features are truly missing, we want to hear it from our users.

The product we aim to build is the product the users want to use and seeing that there are no similar products to RTS Creator, this is both a highly experimental and niche market.

Thursday, February 14, 2013

Newton Physics

One of the most challenging aspects of the RTS Creator engine has been path finding and ground unit movement. When we first started development, there was no collision system and the units moved like tanks in the original Command and Conquer.

This would be OK if we were inventing the first ever Real Time Strategy game, but this style movement is very old fashioned. To modernize the ground unit movement we've added the newton physics engine.

http://newtondynamics.com/forum/newton.php

The newton physics engine is an open source sdk that calculates physics very quickly. Ground units can now collide and push each other. This produces a much smoother movement that can be seen in more modern Real Time Strategy games.

Tuesday, January 29, 2013

Making a Good RTS Game

As we're adding the final touches to the engine and fixing the last bugs our focus is beginning to shift when it comes to engine features.

It's cool when you can make an RTS Game with no coding or 3d modeling knowledge. But can you make an interesting game that people will actually want to play? What things about your game are captivating?

That great thing about the existing AI engine and editor is its more then just a Player AI engine but a Game AI engine. We're beginning to focus more on the Game AI aspect now, and what aspects of the game can be manipulated  so you can add slick level briefings and debriefings, have a video screen display in the players HUD, and add more methods player interaction that make your game interesting.

 As a teaser shot, here's a picture utilizing the newest features -
  • Level Size 
  • Level Texture

Sunday, January 20, 2013

Saving and Loading

The player can now save and load from within the game.

We have a few more changes that need to be made to the engine before we continue working on the editor.

Things have been progressing fantastically and as soon as we find a bug we resolve it.

As a teaser, here's a pic of the main editor in its current state!

Saturday, December 22, 2012

Map Editor Beta!


RTS Creator MapEditor and Engine beta now available for download!

Go to the Downloads section of the website! http://www.rtscreator.net

Wednesday, December 19, 2012

SSAO

We've implemented SSAO into our graphics pipeline!

This subtle effect makes a big difference in the quality of the graphics. See for yourself!


Tuesday, December 18, 2012

Shader Implementation and Obstacles

In the last 2 weeks we've been attempting to implement shader's into the engine and the process has been both challenging and rewarding.

If you don't know what shader's are, they allow you to write code directly to the graphics card to achieve certain effects such as anti-aliasing, and motion blur.

We've implemented per pixel lighting, alpha blending(for team colors), and fast approximate anti-aliasing and the graphics are looking much better!

Our next implementation is for Screen Space Ambient Occlusion(SSAO). SSAO estimates the lighting of objects based on the position of objects on the screen and is used to achieve a certain degree of realism.

The challenge has been that RTS Creator has been developed on a laptop with onboard Intel graphics. Intel doesn't support OpenGL code in a lot ways and we haven't been able to get any implementation of SSAO to work properly.

Because of this though, we're able to draw the line of compatibility and produce a fall back plan. If a persons computer doesn't support a specific shader, we'll have multiple fall back shaders to ensure they can play the game.



Thursday, December 13, 2012

Game GUI

We've added a new GUI system to the engine. It can easily be skinned and customized.

The GUI combined with scripting gives creators the ability to create in game menus that can do just about anything.


Sunday, December 9, 2012

Path Finding Optimized

We're working the last of the bugs and implementing our final critiques when it comes to gameplay.

The path finding has been optimized and resembles that of the original Command and Conquer path finding verbatim. Now, a hundred ground unit objects can path find and navigate the map with a barely noticeable performance hit.

Prior to our enhancements, each unit would re-path every time it had to make a move. When you're path finding on a 300 x 300 grid with a number of obstacles this can take lots of time.

Now, the path finding occurs when the player gives the units the command to attack or move. If the unit can't move it waits, and will try to move along this path for 2 seconds before it re-paths.

This improves the gameplay and gives a much better player experience.

Friday, December 7, 2012

Delayed Deadline

I'm sorry to announce that we didn't meet our deadline of December 1st. Unfortunately with the Holiday season and our other jobs weighing heavily on our time, our progress has been delayed.

But that isn't to say RTS Creator won't be an available product within the next couple of months(or sooner). We've seen similar products and software's come and go with the promise of delivering and not pulling through. We know because we've had our own frustrations when we ourselves were looking forward to the release of a software only to find out that the project had been cancelled.

We can promise that RTS Creator will be released and soon because this has been a dream of ours to develop for the last 10 years; which is when we first started to look for an RTS Creator and were amazed to see that nothing existed.

We're not giving this dream up easily.