Tuesday, December 3, 2013


Working with dragons can be dangerous.  Fire is not something that bothers them.  So naturally developing dragon games have inherent risks.  As such, there has been a pause in game development, and it will continue for a short while.

On Thursday, November 21st, my house burned down.  With it, a great deal of my computer equipment and supplies.  While I did manage to get my server working again, I do not have an effective place to use it.

I am presently seeking a new place to rent for now, and shortly after getting setup, I plan to continue with development again.

I am missing some things I had used before for development of games and greatly for the classes I teach, if anyone would like to contribute, please look at my Learn Build Play post on the same issue: http://learnbuildplay.blogspot.com/2013/12/fire.html

Thank you for any help.

Wednesday, November 6, 2013

WW Building Placement and Rotation.

I've been busy working on the scripts surrounding camera movement and building placement.  Particularly, that we have button based building deployment.  The building follows the mouse cursor until you set it.  You can also rotate the building prior to placing it.  Additionally, the physics on the camera allow it to move faster with shift.

I've also added the ability to move the camera closer or farther from the ground.  The controls have also become more modular.  Which is good considering that they are closer to finished product that will be moved into the final project.  Below is a short video that shows features in action.

New Key Features
  • Only add a building after clicking a button.
  • Building follows cursor
  • Building can be rotated. 
  • Building can be placed.
  • Escape cancels out of placement.
  • Shift rotates building faster.
  • Camera is at isometric overhead view.
  • Camera movement is smoothed out with Velocity, Impulse and Friction.
  • Camera movement triples with Shift Key
  • Camera can raise and shorten its distance from the ground with scroll wheel.
  • Shift affect triples the speed of the zoom.
  • All the code is done through components that can be easily carried into another unity game and it is all Designer Friendly.

I would also take this as an opportunity to express that we are looking for help along the way.  We have all the skill set we need to accomplish this, but we are bottlenecked.  Getting more skilled resources, and possibly apprentice roles would be excellent.

Please take a moment to see if you fit any of the roles we are looking for:  http://warpwars.net/Team/Help 

Tuesday, November 5, 2013

Warp Wars Camera Movement

 Its not finished yet, but I rewrote the camera code from first person shooter to more of an overhead view that is more common with a city builder.  The video is particularly shorter as it really only needs to show the movement, but it also shows adding buildings from this new height.

Next I will be adding a bit of physics for slightly smoother camera movement.  

UPDATE:  I've added mouse wheel scrolling and some of the physics I was talking about.

Wednesday, October 30, 2013

Warp Wars 0.2 On The Move (Region Tool)

At the beginning of V 0.2, we felt a need to hold back all the plans, until we felt our design was complete.  Its not complete yet, but I believe it is far enough along that we can start sharing pieces of it.  That first piece is the:

Region Tool

The region tool is a system that allows us to define a specific area of our game map.  This can be used to lock down regions where buildings can be constructed, areas where bridges can go, safe zones, AI information, etc.  

The specific reason we chose to build it, was to support one of our basic designs for the game, Gridless Buildings.  We want a player to have pixel perfect placement of their buildings.  Most games like this use some kind of tile based system.  But we want our designers to be able to create worlds that are rich, and take full advantage of 3D terrain.  

In order to do this, we needed a way to detect if our building was within certain buildable areas, i.e. reasonably flat ground.  The designers will build the world as the wish, and then use the region tool to mark safe areas.  

Enter the new problem.  Unity does not have out of the box support for this.  You can't even edit individual vertices in unity, you can only stretch, rotate and reposition entire models. To do this, I needed to write code that would generate editable points on each vertice to allow us to reshape them in the game.  Here is a video showing that.

Tuesday, September 24, 2013

Call out for help.

I know its been quiet here, but thats only because we are sneaky.  Our team has been working hard to make sure this next version of the game will be great.  We haven't been wanting to give too much away, because a lot of it is still being designed and decided on.  We have a large amount of concept art that is still growing, we are working on mini games to prove concepts and we are designing around what what we feel makes the game fun to most.

We are looking for a couple of artists and a web designer.  Unity 3D experience is a plus for any, but not required.

We have two really good artists right now, but their work and skill is keeping them focused on 3D Models and Concept Sketches.  We would really like to find:

1) Logo Artist.  We know we need a new look.  We weren't planning on keeping the current logo, but its been lower on our priority list. Now that we have a Kick Starter project release looming, we would like to get a finalized look.

2) Terrain Artist.  The game needs terrain that looks great, near real, but not quite.  Dirt, Rock face, sand, water, etc...  We would prefer Unity 3D skills as well, but that is not absolutely required.

But art is not all we need. Art is only part of it.  We also have need for a new website.  I generated our current site, as a place holder, but my UI design skills are not strong.

3) HTML5/CSS3 Site Designer.  The site needs a new look and feel, something more befitting a war with dragons, and a solid video game.  MVC4/CSHTML skill appreciated but not needed.  We can take care of site logic and database work, but particularly we need someone with the front end skills to make it presentable.

If you are interested we would love to hear from you.  You can contact me directly at Dan.Sagmiller@WarpWars.Net.  Please keep in mind that this is an unpaid Indie project.  We are tracking hours and wages, which will help us fairly distribute profits when the game goes public.  There is a lot of skill in this group already, and you can help it grow.


Monday, August 26, 2013

Warp Wars 0.2 Beginning...

Here we are, month later, and still no Kick Starter.  And why is that?  Because we realized we were talking about dragons, dragons and yes, more dragons.  That and the fact our first release of the game was going
to have none.  We've been focusing on the wrong stuff.  Most of what was making the game fun, was based around the entire structure of all three games.

On Sunday, we had our second meeting about the direction and plans for WW 0.2 and I figured I would share a few of the highlights.

1) Where did the dragons go?

 - Dragons are an integral part of this instance of the game.  From the get go, we will be building up both the world of dragons and the world of humans for the City Builder.   

2) It wasn't pretty was it?
 - When I started this project, I generated an infinite terrain generator, because I was used to projects where artists and modellers were rare and overbooked.  But it was more like a slightly angled Minecraft terrain than a rich environment.  We are starting the entire project over and building it in a way that the designers can work directly with the terrain and pull out all the stops.

3) What are the key features targeted for this new release?
 - No idea!  Well, we have some idea.  We spent some time researching what people found most fun about city builders, (and still are researching) and now we are reviewing all the ideas and only picking the ones that really bring out what will be the most fun in the game.  We plan on solidifying our starting list during next Sunday's meeting.

4) Will it still run in a web browser and be 3D?
 - That's the plan.  Though we are also talking about a higher resolution downloadable version for paying customers and our awesome KickStarter fans!  More to come on that later.
More to come later...

Monday, July 29, 2013


I'm just posting this so you know we haven't died.  :)  We're doing what we can to get ready for the kick starter and diligently working as our alter ego day job goers to make ends meet.  By day, I'm a mild mannered computer programmer helping to fix companies in desperate need of experienced specialists and by night, I'm a newspaper reporter for the daily planet.  Er...   That's another alter ego.  By some nights, I make this game and shoot video for kick starter.  Dragons.

I'm also attending classes on Model Morphing for smoother transitions and custom transition types.  I'm also attending classes on shaders, to improve texturing and image effects.  Dragons..

I've also been researching dragons all over the place.  Eastern, Western, Dragon Men, Elemental Dragons, Dragon Warriors, and a lot of culture surrounding them.  Dragons...

Even though this first game version doesn't include dragons directly, its leading to its sequels and sister game and I think the dragon mechanics will be awesome.

Again, the project is constantly improving.  And in a couple weeks, we'll be hoping for your support in helping us afford the pro licensing for better lighting, shadows and an assortment of additional benefits for the game.  We are also considering developing this for Ouya as well.  It looks like we'd be the first larger scale RTS on it.  Of course with the Ouya financial boost, we'd also be limited to them for the first 6 months after release.  But perhaps that's reasonable.  Still in discussion.  Hope to have kick starter started up soon. :)

Friday, July 5, 2013

Call for Art!

Hey!  Internally, we are considering a KickStarter.com project for the game, to help raise funding for licensing  (No shadows right now, need Unity Pro for that).  But I need need help for this.  To make sure it has its best shot, we are looking for dragon art to use.

The game we are working on now is one of three games, to produce an over all RTS where you get to pay the parts you want.  This part, the first of the three, is a City Builder.  The next two focus on Tactics and Strategy.  Its a war across multiple planets, without the use of space travel, but by warping from planet to planet.  And, it is a war against dragons.

We are looking for artwork to help show that war, of the characters in it.  The humans have soldiers, tanks, bunkers and trucks.  The Dragons come in 3 primary variety; Western, Eastern and Dragon Men.

Eastern, Chinese/Asian, is the typical serpent style dragon, without wings, as shown here:

Western is the type we see in US movies often, with 4 legs and wings, as shown here:

Dragon Men on the other hand are not so typical.  Still possessing the tail, wings, scaly skin, fangs, etc.  standing about 10-12 feet tall, their wings are not usable for flight any more.  The wings have hardened, and their personalities might find them in X-Games, surfing down the side of a mountain on their wings.  (as I mentioned, Hardened wings)  Strong, Fast.

All the dragon types have magic at their disposal, But for most, it is not that powerful.  I'm looking for individual art, or battles, to help paint a portrait of the game.  The tactical game is a cross between a first person shooter and a typical RTS in that you might command a squad of troops or control an individual member of the troop.  You might be a single squad building a bridge, or have 2 dozen dragons against you.  or be dropped into a large scale battle with 50 squads against 50 dragons.

I'm open to pay for the Art, if we use them, but you need to understand that there is no guarantee of payment.  Once the game begins to profit, we have a system to fairly distribute the money where owed, and your work will be added to that list.  If you have questions about this, or want to reach me, I'm available @ Dan.Sagmiller@LearnBuildPlay.com.  (All materials can include a link back to the owner on the initial kick starter project)

Saturday, June 29, 2013

Sprint 10 Complete - Terrain Height, Tiles and Textures

This sprint took an abnormally long time.  The key issue is that this is the first time the complete X/Y relationship between terrain and buildings, and my code didn't have them lined up.

Since I was first creating the terrain engine for this game, I was intending on having multiple terrain types, and an altering height map.  This was my first attempt:

You can understand why I quickly switched it to all grass and flat land.  It was not pretty.  But that all changed this sprint for both terrain types and heights:

As you can see this also includes adding the texture for the mine shaft.  And finally the ability to zoom in and zoom out with the scroll wheel on the mouse was added.  The demo is now live.  Similar to last sprint, all your buildings are gone again and your resources have been reset.  Any time we do any significant changes to the terrain generator, it messes with the placement of water, and height maps.  This can cause issues if objects shift over water, as they can't be added over water.

Here is this sprint releases video:

Thursday, June 6, 2013

Sprint 9 Complete

Just finished sprint 9.  We were a little pressed for time with various issues, including family vacations, switching technologies, new project setups and learning how to get these going, but we did get a few things done.  Some interesting space watching effect on the login screen, fixed the lighting issues for the General House and programming the server/client to understand the tiles that buildings take up.  Check it out.

OH! and hopefully you aren't to attached to your maps on this "Alpha" "Demo", because we had to wipe them all out this time.  The accounts still exist, but buildings and resources have been reset.

Monday, May 27, 2013

Sprint 8 Completed

Sprint 8 saw many challenges to deal with time, and environmental issues.  It was a bit late, but now we have Mines (that go underground), a textured garden, background music and *some* light modifications.  Unfortunately the lighting issues still persist, but we will continue to work with that.  Without further ado, here is some more ado, but in a video.  

Sprint 8 Close delayed...

There are several updates that have made it into sprint 8, and are working, but ultimately, the final demo is not ready.  A bug in the code is preventing you from seeing buildings as you add them.  Also the debugging has been getting wonky.  I've been able to work around its issues before, but none of my work arounds help me see what's happening right in the live code right now.

I'll wait until its working before I post a video on the good parts.  Hope to see you soon.

Thursday, May 9, 2013

Sprint 7 Released

Sprint 7 is completed, and the new build is published:  (Check out the live demo).

We had a checklist of things intended to get in Sprint 7:
DONE 1) buildings are remembered between sessions. 
DONE 2) buildings have prices, that are taken from your available funds.
DONE 3) buildings gain resources by having them.
DONE 4) your initial gains in the account will disappear and depend on buildings now.
DONE 5) On the site, it should have a "Report Error" link on the Live Demo page, so people can post errors, like the fact it doesn't appear to work in Firefox or Aurora.

We also achieved 1 of the 4 stretch goals:  (stretch goals are 'nice to haves' but not a requirement of the sprint.)
DONE - Texture for 1 or more buildings.

So I'm quite pleased with the results. I would point out that the menu system is not really working any more though, and at some point in the near future we will need to switch to a HUD/UI.  It will do for now, but even in the video, you can see that some text is starting to cross over each other.

We don't start sprint 8 until Friday.  Our target goals will be setting the mood, with music and lighting. Still discussing exactly what those plans are, but there will be an update on Friday.


Friday, April 26, 2013

Sprint 7 Starting - Buildings Cost

So Sprint 7 is starting, which I plan to have a key focus on having a cost for buildings, gaining resources from them, and most importantly, that the server remembers your buildings between sessions.

This image is only an example of how prices might show up.  Since its appearance is not as important right now as the function, all I care about is making it work.  I can pretty it up later.

1) buildings are remembered between sessions.
2) buildings have prices, that are taken from your available funds.
3) buildings gain resources by having them.
4) your initial gains in the account will disappear and depend on buildings now.
5) On the site, it should have a "Report Error" link on the Live Demo page, so people can post errors, like the fact it doesn't appear to work in Firefox or Aurora.

Stretch Goals: (Meaning it would be nice to get to these, but the sprint doesn't depend on it)
1) Building Dependencies.  I.e. must build Starter House, then Starter Garden/Shed, then You can add saw Mill/Mine, Then you can add Barracks.  Naturally the orders might change over time, but the functionality should be their.
2) Texture for 1 or more buildings.
3) Music and or Sound Effects.
4) Prettying up the website more.

Thursday, April 25, 2013

Wednesday, April 24, 2013

24 hours to Sprint 6's Live Demo

I had to make some changes to how the menu code works, rewriting a portion of it.  And I also started getting better at some of the video editing.  Of course I'm just starting out, so in a few months I'll look back and realize how poor quality it was, but no matter, check out the video.

Sunday, April 21, 2013

Warp Wars - Sprint 6 (Menus, buildings and logouts Oh MY!)

Friends! Countrymen (and women)!  Lend my your... Artwork!  In the form of a Logo!  Dost thou taketh up the challenge?  Dost thou plan to be a part of this adventure?  Do not sit idly by!  The world is filled to the brink with couch potatoes. 

But that's not all.  I have menus operational (still being cleaned up a bit), I have buildings being added.  I have logouts.  As the video below will show.  

Oh, and the Live Demo is having some issues.  I'm in the middle of making changes to the development side, so I can't post a fix yet.  It might be dysfunctional until Thursday the 25th, the last day of the sprint.  But it WILL be fixed.

Friday, April 19, 2013

Sprint 6, Menu added

I've just prepared the first video with audio, in efforts to keep improving the quality of the demo.  There is no new live demo, but this is showcasing part of the menu in the next alpha release.

Let me know if you can think of ways to improve the videos as well.  :)

Tuesday, April 16, 2013

Welcome Herman!

I'm pleased to announce the recent interest and support in Warp Wars from Herman Charles Serrano.  He has a more visible background with such games as Starglider 2, Carrier Command and Chaos Engine.  He has expressed interest in working with Warp Wars to help us create an excellent collection of 3D structures for the game.  You can see a great deal of his past work at CGPortfolio.  Here are a few samples of his work:

And its not just that he is interested in the project, but the fact that he has already produced some content for it, that should be visible in this sprint.  (part of it)  I asked if he could work on a starting structure, which is essentially a log house.  He finished a variety of Low-Poly samples, each of which I believe will work well in various ways.  Here are some samples of his work here:

Monday, April 15, 2013

Welcome Pavel!

I'd like to take a moment to introduce one of the new members of the team: Pavel Marar.  He's worked on a few NDA restricted game projects, so unfortunately, I can't share much about his background.  But he's already been helping out and by far the most interactive member on the GDD, Building Discussions and the future of the Tech Tree.

He's located in Moscow (Russia, in case there is any ambiguity) and is what I would consider a Bohemian in pursuit of riches.  :P  He gets only 3 hours of sleep a night, usually waking up with a keyboard imprint on his forehead.  (I may be winging this description a bit)  He works part time, so he can eat, but the rest of the time he's designing games.  His goal, is to get some great games built with his name on the credits, and hopefully, some cash in his pocket.  Bohemian yes, but you are more free to make games when you don't need a day job.

What to call him?  Pavel, or else his computer's call him "effes".  I did a translation on that, and it comes out as "effes".  So what does it mean?  A while back, he choose a character name in HoMM 3, by hitting the keyboard with no particular word in mind.  Ever since, his computers have known what to call him.

What's he working on now?  He's been working on math models for balancing city structures/tech trees, and also taking an advanced look at the next 2 games, WW Tactics and WW Strategy to start the ground work their as well.  

Friday, April 12, 2013

Sprint 6 Starting

Able to move quickly and easily
In the technical world, Agile, refers to a method of product development designed to handle change.  One of the perks of following this methodology is that you get new demos out often.  Our last demo was from the end of Sprint 5.  The terrain was all I wanted from that sprint.  I spend no more than 2 weeks on any sprint, and try to get out a good demo.   I prepared all the basic designs I needed for Sprint 6 early, so I closed sprint 5 after only 9 days.  So Sprint 6's focus will be menus and a starter building. At least enough to create a solid demo.

On a side note, I ended up getting sick from my niece, (bothersome little cute thing) and had to post pone the Monday meetup to discuss the HUD for this sprint.  But I had the make-up meet-up Wednesday night and additionally held a long HUD/GUI conversation with another designer as well.  Which is why Sprint 5 was able to close.  Here are the plans for this sprint.

1) Most appealing at the moment is 3D Context menus, mixed with a smaller HUD/GUI.  Here's an example of some minor graphics used as art in this other picture, but that is what I plan on being more of the focus: A couple of basic bezier curves connecting an object to 3D/holographic appearance menus.  (please note, that this image I have was an example of HUD images I did a search on a while back.  I was not able to find the owner of this image though, otherwise I would post a reference back for credit)
You can see how the menus just pop out from the object.  I believe both the game Home World and the app Blender use a similar setup, of right click and have the menus appear directly related to the 3D object.

2) To begin with, I'm just going to add a right click menu to the terrain directly.  By right clicking, you get options, one for testing might be to log out so I have multiple menu options.  But the plan, is to be able to add a building.  As stretch goals, (which mean if they get done, great, but they are not needed) I would also plan on being able to add multiple buildings, and for them to remain when returning to the game.  another stretch goal is to be able to remove them.

Alright, So now its time to press forward.

 - We can get by without this still, but we are getting further into graphics, models, HUDs, GUIs, etc...
 - If someone with decent 3D modelling skills can offer a starter building, please step forward.  We have people working on it, but our best resources haven't had much time, and the active people don't have as much skill.

If you see something in the way of graphics, models, images, etc... that you think you can do better on, try it. We welcome it.  We'll take the best we can get, and hope to keep upgrading.  Feel free to ask questions on the forum if you want to know some more details about what we need.

Saturday, April 6, 2013

What's going on now?

I wanted to let you know about a slowdown that's happening.  Over the last few days, I haven't really written any more code, for two reasons.  The first, is that I'm not sure what to do next, and the second is that I recently got an influx of programmers and designers with good histories from around the world.  Russia, India, UK, France, US and some others I think (I don't have locations from everyone yet)

Why don't I know what to do next?
Well I actually do know what I want to do next, just not how.  I'm about to add buildings, but I want to start it with the player being able to add the buildings.  In order to do that, I should have some form of HUD (Heads Up Display) so the player can click on something.  And that brought me to questioning what the best approaches to HUD's are.  I've posed this question to GameDev.Net, and received some answers to consider, and I'm also having a meetup on skype Monday night with some other game designers, to specifically discuss HUDs and Marketing.  Then I'll probably take another day to plan out my next move, then go build it.

That sounds like a bunch of people joining the team.
Yeah, I wasn't expecting this much reaction, especially from some of the histories that some of them came in with.  So far, any assistance I've had has been primarily through direct communication via email, skype or in person discussion.  But ate up a lot of time, just getting people introduced to the project.  I'm working on selecting/setting up a private message board service for the group to use, so we can work on things as a group, instead of everything going through me and however I may filter it.  This will also take some time to review.  (Any recommendations?)

Thursday, April 4, 2013

What's new?

This image is showing this panel on the top right side of the blog.  See if any of these links fill your buffalo with rice.

1) What is this project about? - This first link goes back to the first post, where I wrote up what the nature of this game is.  A good sign, is that its just over a month later, and this information is still all relevant.  Check it out to get familiar with the project.  The general concept is there in a way that I feel is in pretty effectively sums up the project. (link)

2) Live demo - This link takes you to the game's website.  The website is still a bit under developed, but it is navigable now.  From the site's main page, it is very easy to get to the Live Demo, or back to this blog. (link)

3) Have an idea - I setup a User Voice forum, where anyone can go and post ideas about the game.  People then vote on these ideas.  Because the ideas are couple with voting, it helps to sum up community perspective better. (link)

4) Join the team - I have a classified ad on GameDev.net, that describes some of the things we are looking for help with.  Do you have some skills in game development?  Do you want them?  We have positions open for both Master roles and Apprentice roles (and anything in-between)  Not everyone who applies will be accepted.  This ad will be updated from time to time.  Check it out if you want to be involved. (link)

Wednesday, April 3, 2013

New Live Demo! Client V0.0.5.420

Client V0.0.5.420 is live and running.  Go here: http://WarpWars.Net.

This version finishes the 3D infinite terrain scrolling.  It never has more than 800 tiles in memory at a time, and simply updates and re-positions them as the player moves the camera.  You would have to scroll around 300 million screen lengths before you found the edge of the map/broke the code.  The final game will close you in a bit more, providing more land as upgrades/features in the game.

WASD map controls are replaced with mouse click and drag.  But I didn't limit myself there.  I also added Rotation, to overemphasize the 3D in a browser.

I also cleaned up textures in the game, so all the tiles are a shade of grass (4 different grass textures).

I also cleaned up the project in general, reducing the download from 16 megs to 4 megs.

I also had the opportunity to learn MVC4/Razor at work, and went through formal training yesterday, so I cleaned up the website a bit more.  Certainly not production ready, but much better than before.  The top links actually work, leading you to the live demo and back here to the blog.

Somehow I lost light shading in this edition and I'm not sure why.  It still works in the game editor, just not the web, and it was working before.  I''ll consider that something to check up on for the next live demo.  I know I made a few tweaks to the rendering system while working on lag issues, so I've got a few good places to look.


I could use some help.  Please try it out, and let me know if you experience lag, subtle choppiness or it runs smoothly.  Please include your system specs if you do, like OS, Core GHz/count, Ram, browser.  Comment publicly on this post.  Thanks.

Monday, April 1, 2013

Chris Kukla joins Warp Wars

Chris Kukla, a musician who I've had the opportunity to listen to, has expressed interest in joining this project.  He has a history working with other games, commercials and comfort in a wide range of music/instruments.

I spent a couple hours on Skype with him talking about the feeling for the music to convey as well as sound effects.  Music will probably come first, as that might help shape the game.  Sound effects aren't planned until we have specific things (models/animations/events) where sound would be specifically appropriate.

Check out his site: http://chriskukla.com/music/orchestral.html - A lot of his music from Orchestral to 8 bit.  I've listened to most of it, and am quite pleased with the skill and ability involved in each peace.  A few pieces I felt where close to the game already but not quite.  Industrial Horror was a good one.  Perhaps a little too dark for this WW City, but not for WW Strategy.  Chill was another good one, not quite what I would use either, but I felt that both had certain characteristics fitting to my current idea of the game.

No idea when, but I can't wait to hear some of the experimentals/ideas he comes up with.  

Progress Update...

No video or pictures or demo, just a short post indicating the latest progress.

Infinite maps/scrolling works sort of.  You always see tiles now, and they appear to link up/slide correctly.

Demo Update Prevention Bugs
1) Map regeneration causes lag of up to 0.3 seconds, I need to minimize that.
 - - Only a 44 x 44 tile grid is created at a time.  you get within 12 tiles of the border, it reprocesses it with you in the center.  less than 2000 tiles are in memory at any given time.

2) Mouse moves during lag mess with the drag timing, and fling the map at a high speed.

3) Something about the game objects for the tiles are not disposing or recycling properly.  After a certain amount of movement, Lag increases, and then errors occur complaining about too many rigid bodies.
 - My present code is recycling the objects, not destroying them.  resetting the height, texture and location.  It works to begin with, but gets killed by the bug:

I'll be fixing these things prior to uploading the demo.  The lag issues are caused by over processing, and may cause laptops to overheat, heavy processing in general, and potentially web browser crashes.

I have a couple ideas to fix them, in addition to some searching to do.  But once this is done, that means the terrain is done and I can start moving on to more interactive things.

Hope to have a new demo up soon.

Saturday, March 30, 2013

New Developer to Assist...

Another developer has expressed interest in assisting with the game.  Similar to me he has considerable experience with .NET, and relatively new to Unity.  In order to get ready for multiple developers, I've added the project and design work to Team Foundation Server.  I also spent a little time organizing and cleaning it up.
Team Foundation Server is an excellent tool I've used before, and Microsoft has it for free now at tfs.visualstudio.com.  At least for a limited time.  By the time they go to charge (for teams over to 5) I plan to migrate the live version to my own TFS server (which I will have to setup)

Since the cleanup and TFS Sync are done, I'll be back improving the game.  I've got a few key areas to work on.  1) Map needs the tiles to expand, so when moving the view, the tile map appears never ending.  2) HUD should start getting a look/design work.  3)  Tiles need to smoothly fade from one tile to the next.  4) A speed bug with the map based on position needs to be addressed.

Friday, March 29, 2013

New Domain and game rotations

I have just completed the blog transition to Http://Blog.WarpWars.Net.  Also, WarpWars.Net is now the site with the demo.  (under very slow construction)

Unless something considerable changes, I plan to keep the name Warp Wars, with the sub names City, Tactics and Strategy.  Its grown on me.

Additionally, I have another game update, which is not part of the live alpha demo yet.  Rotation.

The video demonstrates the new movement and rotation abilities.  By clicking anywhere and dragging the mouse, the map moves to follow.  Instead of exact mouse mimicry, I applied a simple Velocity/Friction physics operation to the map.  This allows smooth motion, and the ability to 'fling' the map and move faster/farther in a single motion.

Of course I also added rotation, which is accomplished by pressing R while moving the mouse.  This hot key may change, but for now it works.  The rotation does not operate on the physics operations, so it follows the mouse more accurately.  

WASD keys no longer affect your map location. 

Again, the rotation and mouse based movement is not in the live demo.  I have a few things to try working out before I post another.

Thursday, March 28, 2013

Name Change Pending...

I just acquired WarpWars.net, which already resolves to the game site.  In the next couple days, blog.warpwarscity.com will not resolve.  Instead the new blog will be Blog.WarpWars.Net.

WASD - Client Version

New Demo Live - New Web Site Live - Go visit http://WarpWars.net/.

New Demo Live:

So the new demo is available.  (its url has changed, I think, so use the link above, and then click to see the live demo)

Here is what's up with this edition:
  1. All accounts still exist.  This did not require server changes.
  2. Each player now has a map.
    1. Anytime a player logs in, the map will look exactly the same.
    2. The map is different for each player. - I'll explain in a moment.
    3. Maps are not stored anywhere - I'll explain this too.
    4. Maps are presently 32x32 tiles, but the engine is capable of near infinite - I'll explain this to.
  3. The mouse move is now gone.
  4. You can now move around the game by clicking W, A, S or D, to act as arrow keys.
  5. Ambient Lighting now exists, so you can see a bit more

Technical Mumbo Jumbo:

System.Random in .Net is slow.  Doesn't seem like it, but to produce 1 million distinctly seeded height positions, it took > 3900 milliseconds every time.  So I discussed this with numerous other developers, on several forums, until I found a solution which required little effort.  The new randomization for 1 million distinctly seeded height positions is now < 67 milliseconds, 1.7% of the original time it took.  If anyone sees some weird randomization, let met see a screen shot and know which account name you used.

To keep a map of 1 million tiles (1024x1024 map size) It would have been nearly 50 megs of data.  With any luck, this city builder will have 10,000 players or more.  for those 10k players, we would have been using 500 gigs of storage on the server, plus the transfer of the data, and the management of it would have been a nightmare on performance.  (these maps change)  So instead, I use the randomization I mentioned above, to choose the height for each vertice (corners of the tiles) and the tile type.  
 - The randomized values come from one seed per request.  The seed is generated from the X coordinate, the Y coordinate and the player's Id.  This way everyone's map is different.
 - Since these are generated incredibly fast now.  I can entirely depend on it for live data.  
 - This is why there is nothing saved.  (also no DB changes)  The playerid, X and Y are already there.  The only thing that will transfer is the data about any terrain that has changed.  
 - Since the player's unique ID is part of the seed for each tile, the layout is different for each player.
 - Since the ID's, and Locations are managed with 32 bit integers, that means that these maps can go out more than 2 billion tiles in any direction.  (hence my near infinite)
 - I don't have it reprocessing anything with position yet, so you only see the 32x32 tile portion in the game now.

To Do List:

I need to start reducing the content size.  
 - The skybox I used on the game side is not needed.  
 - I'm presently using 512x512 pixel tiles that are throw away.  I should be using 64x64.
 - The Satelite is not ultimately going to be used.  It is a very high definition model, which is expensive on the initial packets download size.  
I also need to get the map to move with the player.  I.e. process the next parts of what they will see, and only provide a small portion of that to the rendering system.

New Site:

So the new site is up.  Before, you always had to go to /index.html, and if you didn't include that, you wouldn't get anywhere.  Now, there are two separate websites.  MVC4 Service based site, and an MVC4 Web Based Site.  I've only done a minute level of RAZOR modifications to the index, which you can see from the pic above.  It still looks like an initial sample page.  But this will get cleaned up over time.

Again, please note that the website is NOT a priority.  The game is.  I will get back to the website when the game is better off.  pieces here and there.  But I have no specific plans yet.

Tuesday, March 26, 2013

Maps are prettier, still need work though.

(No new demo online yet)
I've been working on the map system some more.  I went back to a random map, relying on code that I knew worked, but was at the wrong angle/position.  After messing around with that for a bit, I finally got the ground showing up at on the X/Z plane, with +Y=Up.  I built the code that produced all the vertices and UV mapping (textures) for every triangle of the ground (ideally every square) from scratch.  And with this, had to realign/position everything.  

I don't know why it seemed reasonable to me to use X/Y as the ground plane originally.  if I went with that, I'd have to rotate every object that entered the game, and external scripts wouldn't work in many cases.  The rotating camera motion is from an asset called Mouse Orbit.  it keeps a certain distance, from the target object, but its only lockable angle is from the Y Axis.  (so you can prevent it from looking on the other side of the models)  I would have had to rewrite the code for that as well.  I think I've been in the 2D X/Y side for too long lately.  So anyway, here is a screen shot from the new code.

Oh yeah, I also added a sky box.  Its a bit more fitting now with actual sky, instead of that faded dark blue.  The opening login is still the same space scene.  (Oh look, it spins.)

Monday, March 25, 2013

Dynamic Maps Update...

So I've been working on Maps in the game.  I believe my routine for dynamically producing map blocks (sections of map, 32x32) is near complete.  However, I have something wrong with how that routine gets translated back that I need to resolve.
This image shows the current bug with the tile map.  1, it is a jagged array of horror.  2, it shows up at the back instead of the bottom (where ground aught to be).

I'm hoping its just the display portion that is messed up, because the display code was working before, but perhaps there is something with the math on that that isn't working with the dynamics now.  I'm off to work, but hopefully I'll be able to get this resolved and operating shortly.

Thursday, March 21, 2013

Changing the mapping plan... Again

So, I've been basing the map on the idea that the server produces and manages the terrain, and then sends updates to the client.  However, someone gave me a great alternative and I'm going to use it.  (Yes, this means more reprogramming in this area.


  • Maps are unique for each player
  • The client and the server are aware of the same map data
  • Must keep bandwidth usage low.
  • The terrain can and will change both in height and in texture.
In my system, a 1000x1000 grid is still around 52 megs uncompressed.  Or 5 megs compressed, but requires heavier processing to load into memory/save again.

The new system will instead use a seed number, like Minecraft's mapping system.  Both the client and server have the same starting seed.  To begin with, I'll just use the players Id as the random seed, since it will be unique to each player, and that is already a critical piece of knowledge for nearly all other communications in the game.

The next issue, is making sure the map generating methods are fast and lightweight.  On the client, it will be passed onto a work thread.  But the server doesn't have that luxury.  The server will not hold data in memory, but at points it needs to process it, it will generate this data on the fly.  Fortunately, the server won't need to know it often.  Also, I'll split the Height Map processing and the terrain type processing, as those won't be needed at the same time in most cases.

The only detail needed on top of that, will be alterations, either from players placing things like roads, which changes the terrain textures, or placing buildings, which will level out the height map for a particular area.  These alterations are the only data that needs to be transferred then, and that is small enough/varied enough it will value from sitting in the database.

So, again, this is taking more time, but I've never built a City Builder before, or more particularly an RTS, that the game trio will be.  I've been wanting to, but held off until now, with Unity.

Texture systems will also change, but I'll save that for another blog, once I get to it.

Wednesday, March 20, 2013

Map Data downloading

Its been a while since I last posted (5 days to be exact) and I didn't want you to think that I've done nothing. Why I've spent a great deal of time thinking about nonsense, like Alderon and the 7 Dwarves (they both had buns on their heads)

But in a not to distant actual reality, I found myself dealing with an annoying bug in the latest update of Unity (4.1) where all my JS files now complain that they don't have a UnityEditor using statement.   But I just go that fixed.  I also spent a while thinking about the best formats to save the data to, came up with a really good one, but then went with the easier one for now.

I also established build environment configurations for the client and service.  This allows me to build for the different environments faster, as I don't have to change a whole bunch of settings for each environment.  This is important as the number of changing features have increased.

So now, at user generation, it creates a map file, stores it on the web site, and the client downloads it.  Then, it shows how large the map segment was in bytes:
Since this single number position value is the only thing that changes, and its only in this image (not uploaded), you might be thinking that all I really did over the last 5 days was accidentally break the resource dynamics so that only the Credits would work.  You'll just have to take my word that something cooler is happening behind the scenes.  :)

Friday, March 15, 2013

Considerations on Terrain Maps

So I'm still working on Terrain, and have no visual updates to include this time.  I started development on one form of terrain, but my original design was going to yield 50 megs map files that would need to be reloaded, edited and resaved by the server any time a change happens.  ouch.  I needed a better way.

First, I took a look at what my current architecture requires:

  1. Players have 3D maps, that can dynamically change and often during game play
    1. In order to place buildings, sections of land would need to be leveled. 
  2. The server is primarily responsible for logic, to reduce client hacking abilities.
    1. This even includes subtle validations on the land.
  3. MVC4 Restful Services would mean the data file for the map would need to be reloaded on the server every time a change occurs, or even just to validate land structures.  
    1. For the 50 Meg file size, and potentially hundreds of simultaneous users, this would have crushed the server from Hello.
  4. The MVC servers translates everything to text for transfer to client.  That would increase the content size, processing effort, and transfer speed of the binary map data.
To try to meet all of these concerns:
  1. The tiles will be managed in smaller segments, probably 32x32 tiles at a time, or 1024 tiles. 
  2. These blocks of tile data will be saved in binary form.
  3. The block files will be stored in a location accessible through the web.
  4. The client will directly download the smaller binary files, skipping the use of MVC4.
  5. Map Processors on the server side will be designed to work directly against the binary format, instead of fully loading the tiles into objects, allowing direct read/writes to the binary files as needed.
  6. Depending on the amount of data changing from the Server Side Map Processors, 
    1. Smaller data changes will be sent to the client to apply to memory directly and leave the cached map files alone.  When the client logs out and back in, it will download any maps files that are out of date.
    2. Larger changes will just download the map change immediately, and reload it into memory, overwriting the previous knowledge.
First proof will simply be the first 32x32 grid of tiles.  creating on the server, and displaying on the client.  No caching or anything like that yet.

I'm hoping this first draft should be ready within a week.

Also, some people have commented to me that they haven't been able to connect to the game client because there routers complain about the DNS.  WarpWars.RR.NU (or anything from .RR.NU) has its DNS set dynamically, which some security systems flag as dangerous because it is less stable, and has more potential of hiding hoodlums (Not Hoodlums!) with fake sites.  As that is the case, I will see about getting a more appropriate locked DNS name.  (warpwars.com is taken)

If anyone cares to, come up with potential domain names at godaddy or somewhere else, that might suit the game, and let me know if they are available.  I may (or may not) pick the domain name you chose.  :)

Wednesday, March 13, 2013

The Net Works!

(pun intended)

For the entire project, and experimenting with unity, I have found it impossible to get network communications up and running from Unity Web Player.  Until now.  That's right, the first web edition, with networking is now live!

As it turns out, I used TcpClient, and got it to work on a separate thread.  TcpClient didn't work at first either.  What did work, was to download a Socket Policy Server, install it as a service on my server, and give it a fire wall rule to work.  Since it didn't work until I got the Policy Server running, I'm betting the other methods also work.  (Additional technical note, I added the line Security.PrefetchSocketPolicy, and connected it to port 843 from the client)

So now, I have a lot of commented networking code, which I'll be cleaning up, and probably switch back to HttpWebRequest/Response again, because that should be the easiest method to maintain for all my MVC4 communications.

What's that?  Oh right!  Some of you probably want to try the web game.  Here's the link:

http://warpwars.rr.nu/default.aspx (please note, the server address without the page wont work.  Again, I'm not spending a lot of time on the web, I'm focusing on the game development instead.)

Remember, there is not much to do yet, but you can create an account, log in, and start gaining credits in the resource manager.  Accounts will be wiped after the next significant upgrade.  Also, there is no account info validation/emailing.  You can enter anything you want.  I created an account 'asdf' with password 'asdf', a week ago, so that one has lots of funds available.  Nothing to do with them yet, but its cool to see that resources are growing over time.

Tuesday, March 12, 2013

Network Nightmare...

I'm posting today to let you know about a blocker I'm facing.  I got the Web Version of the game working finally.  One of the selling points to this game is that it will play from the web browser. So this is good news right?

While the graphics did show up, Network communications of any type are failing.  Can't get the server version, can't create new users, can't login and can't obtain resource metrics.  This is a significant issue right now, and I need to figure out how to resolve it.  I'm putting the tile work on hold, and the next external version will be web with networking.

I strongly feel that the web browser aspect is a major sales point for this game.  Similar to Runescape VS World of Warcraft.  Comparably, WoW appears to be the much better product.  But WoW requires a local installation, meaning that you can only play it at a machine you have access to install it.  Runsescape is (or was, haven't kept up on it) Browser based, so you could just run it on any machine you were at.

Runescape has 8.5 million paying members (5.95 per month = 50+ Million / Month)  Now Runescape is far more than just a browser based game, but that is a great reason why people get into it so easily.  You just connect from where ever.  I found out about this, because I was teaching a game on programming back some 6, 7 years ago, and all the kids that were early were playing it on their machines.

Because of the Web by itself being such a strong feature, I intend to keep it.  While there are plenty of City Builder games on the web, how many of them are fully 3D?  (like Runescape)

So in recap, all my attention is devoted to getting the network communications working in the browser edition, then posting it online.  (If I'm waiting for messages, I may continue on the Tiled ground)

Monday, March 11, 2013

Tile Maker Tool

To deal with one of the graphics needs from the previous post, I built a tool that creates tiles from masks.  Masking is a process that lets you grab only a portion of the image, as you will see below, and particularly, I'm using it to help create smoother, more randomizes lines between tiles.  If you look at the previous post, the tiles have razor sharp lines between them, making it painfully obvious that there are square tiles at work.  This tool will help fix that

The images below are not what I intend to use for the game, I just grabbed some temporary images to prove the tool out with (hint hint graphic designers, 64x64 tileable, need dirt, grass, concrete, sand, pavement, possibly a few others but not many. :).

Then I used The following mask images.  (The white shows where the mask is, the rest is translucent.) 

For anyone who isn't aware of how masking in games work, here is an example of how it works when I combine NE with 2.  Starting with a black image, the mask only let the part of the image through that overlapped with the white of the mask.

But even with this one, I was running into a problem.  If you compare the original grass image (2.png) with the masked tile above, it appears very bright.  I wasn't sure why.  To try to debug, I attempted adding a second masked portion.  (3 and NW)

This one looked a lot closer, but there are still pixels that are too bright.  When I combined them things really got messed up.

So I spent a while making sure my equations where right.  with some help from GameDev.Net, I was able to first fix the initial coloring issue, as someone pointed out I had put a '*' where I needed a "+".    Next result:

Now the initial grass and concrete match up better.  But I still ended up with an over-bright section where they mesh together.  The problem was that my first try at this was using a binary equation that actually had no hope of working.  (it works great if there is no alpha blending required)

Original = Original |OR| (New &AND& Mask)
But GameDev.Net came through again, with a better equation, though a bit longer.  (thanks eppo)

Original = ((Original * (255 - Mask)) + (New * Mask)) / 255
After applying this, I was able to get the files fully working, and here is a subset of what the tool created.

The numbers relate to the tile type, and the position relates to the mask.  The order is NE-NW-SE-SW.  0 is dirt, 1 is grass, 2 is concrete, 3 is pavement and 4 is sand.  

From these 5 images, at 64x64 pixels each, with all permutations, came out to 625 images, for a total of 6.5 megs.

To begin with, the download will just include these in the beta, but I'm thinking that I'll have the client request which tiles it needs based on the map it receives.  Either that, or that this tile producing process will execute on the client side later on, which took approximately 3.5 seconds on a 3.3 GHz thread.  But that included save time, which won't be needed on the game client, unless I can cache the images.