Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1302167 Posts in 58036 Topics- by 49101 Members - Latest Member: gnegnegne

June 27, 2017, 09:15:11 am

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsFeedbackDevLogsIt Usually Ends In Nuclear War (4X civilization building game)
Pages: 1 [2]
Print
Author Topic: It Usually Ends In Nuclear War (4X civilization building game)  (Read 7855 times)
Sub
Level 0
**



View Profile
« Reply #20 on: March 21, 2015, 10:11:22 am »

I consider myself a slow worker, but I am still making some progress on this thing.  I spent all of last Saturday and Sunday debugging various errors with the game that had popped up, which is harder to talk about than shiny new features.  I mostly worked on fixing issues / crashes due to incorrect syncing of data between the province view screen (pictured below) and the actual game data. 



I don't expect this screen to look anything like this when the game is done, but it has to look like something for now and I'm not sure where it'll end up.  In any case, I've worked out all the issues and the game is once again solid as a rock in terms of bugs / crashes.  I have no one but myself to blame for the issues, though.  I'm making my own GUI system for this game and it's a learn as you go process. 

I also spent a little bit of time last weekend stress testing units / pathfinding and I'm pretty happy with the results. 



That's a few hundred units auto exploring the map.  This is subject to change, but I currently envision the game ticking along at a solid rate similar to the Europa Universalis series, so it's pretty important that the time between turns is almost non-existent. 

Last night I built another GUI widget for the game -- We now have progress bars!  Try to contain your excitement. 



It might be a bit hard to see with the embedded screenshot.  At the moment I'm using it to countdown time until the next game tick occurs (aka the next 'turn'), as well as to show the progress of things being produced by a province. 

The remainder of this weekend I'm going to attempt to actually hook up the province growth algorithm that I have planned.  I want the number of births per 1000 people to roughly approximate the rate that populations have grown through history.  I'm going to have a rudimentary model of disease and a food/starvation system to keep populations from growing indefinitely.  In Civilization, population grows on a stairs sort of system, where it's flat for a long period of time and then it bumps up instantly when you fill up your food bars.  I want the population in this to grow in a more linear fashion, until you start developing technologies to eliminate starvation / disease. 
Logged

Connor
Level 8
***


maker of blitzkampfer, Verigans revenge, etc


View Profile WWW Email
« Reply #21 on: March 24, 2015, 01:49:51 pm »

is this going to be a paid thing? will it be on steam? those two questions were the first things that came to mind.

Other than those two questions, this looks pretty impressive. the scope of the maps in civ games to me were far too small in my opinion, so to have a massive map like that is wicked. no more running into my friends in the first five minutes, haha.

i suppose thats also another question, will there be multiplayer? lan multiplayer looks like it would probably be wicked in this.
Logged

Firearrow games
www.firearrowgames.net

blitzkampfer:
https://forums.tigsource.com/index.php?topic=52009.msg1280646#msg1280646

too bad eggybooms ents are actually men in paper mache suits and they NEED to be agile
Sub
Level 0
**



View Profile
« Reply #22 on: March 24, 2015, 06:52:14 pm »

is this going to be a paid thing? will it be on steam? those two questions were the first things that came to mind.

Other than those two questions, this looks pretty impressive. the scope of the maps in civ games to me were far too small in my opinion, so to have a massive map like that is wicked. no more running into my friends in the first five minutes, haha.

i suppose thats also another question, will there be multiplayer? lan multiplayer looks like it would probably be wicked in this.

Hey, thanks for the interest Smiley

I'm planning on selling the game when it's complete.  I'd like to get it on Steam, but I'd have to get through their greenlight process first. 

As for whether it'll have multiplayer, it's going to be single player only.  I was never the type to play civ-style games in multiplayer, and I'm trying to prevent feature creep. 
Logged

TheChaoticGood
Level 1
*



View Profile WWW Email
« Reply #23 on: March 25, 2015, 03:00:03 am »

How long until we can see things blow up Smiley I'm a simple man.
Logged

Sub
Level 0
**



View Profile
« Reply #24 on: March 25, 2015, 02:28:36 pm »

Given my artistic abilities, any explosions we do get probably won't be too pretty Tongue

I'll figure something out though.
Logged

Sub
Level 0
**



View Profile
« Reply #25 on: June 05, 2015, 05:19:34 pm »

Still alive and working on this!

I've been working on the GUI system lately.  I just finished working on a simple automatic layout system so that I don't have to worry about manually positioning GUI items on the screen.  This was surprisingly hard to do, but I did come up with something that I'm happy with.  It's not the greatest thing in the world as I only have so much free time to work on the game, but it should definitely help me out in the future.

At the most basic level, I'm thinking of each GUI component as a rectangle that takes up space on the screen.  The layout system just manipulates rectangles for me by positioning and sizing them based on properties that I define for the rectangles.  So if for whatever reason I want a GUI component to span half of its container in width, and all of its container in height (a container the size of the screen is always the top most container), be anchored to the left edge of its container with an offset of however many pixels, be centered vertically, as well as have constraints on the size (min/max width and height), I can do that really easily.  The cool thing is that each GUI component can have other GUI components as children, allowing me to embed and use these position properties inside other GUI components. 

I'm going to be working on the GUI system until it's finished.  I very much want to be done with this task and start work on the actual game again, but I think patience always pays off in the end.  It should be worth it to have a good base so that I can quickly create / iterate on the GUI screens.  In terms of components, at the moment I have a


I think that's a pretty good list of things, but I still need to build out a tab container, dropdown list, input box for text, a list view, numeric spinner, and a color picker.  I also want some way of making certain components scrollable.  I have some vague ideas on how to go about making the components scrollable, but I'm not really sure how I'm going to do it yet.

I'm also trying to pick out color schemes for the GUI.  I am not an artist, so I'm going to be going with plain colors / shapes instead of using premade images as a lot of games do.  I'm thinking something simple like white text on a semi transparent background as shown here looks pretty good.

Logged

Sub
Level 0
**



View Profile
« Reply #26 on: November 08, 2015, 05:28:38 pm »

Game development is a bit ridiculous.  I suppose the type of game that I chose to make is even more so -- I've been working on this thing since (around) November 27, 2012, and I'm still nowhere near finished.  The game isn't even playable in the sense of being in an alpha state.  I'm working on it at least 10 hours a week, which is better than nothing, but there's just insane amount of work to do, and it seems like most tasks are more time consuming than at first glance.  I'll start a task, and I'll think it'll take me an hour to do, and then 4 hours will have gone by and I'll be halfway there.  

So yeah, it's frustrating.  I like to think that I have super human patience, but it's going to be great when I get this game behind me.  I have a full time job where I code, and then to try and come home and code some more after that is really tough.  

But I'm making progress.  In my last post I talked about how I was working on the GUI system, and that's come and gone.  It needs to be polished in terms of how it looks, but it's got all the widgets that I'll need, and everything works (!) and is relatively easy for me to use which is important.  

The current goal is to have a rough playable version up and running by January 1st.  I'm defining that as all of the core gameplay systems in place.  They'll be rough, but they'll be in there.  
« Last Edit: March 05, 2017, 02:37:39 pm by Sub » Logged

Pixel Noise
Level 8
***



View Profile WWW Email
« Reply #27 on: December 18, 2015, 10:01:36 am »

The mental exhaustion of working all day, only to come home and try to create is REAL! Keep it up though Smiley
Logged

Pixel Noise - professional composition/sound design studio.
 https://soundcloud.com/pixel-noise
 https://twitter.com/PixelNoiseMusic
 https://www.facebook.com/pixelnoisemusic

Currently working on the Underworld Dungeon OST!
https://forums.tigsource.com/index.php?topic=50972.0
Sub
Level 0
**



View Profile
« Reply #28 on: December 19, 2015, 09:58:14 pm »

Thanks!  Honestly, I'm thinking about it and I don't think I even mind the mental exhaustion so much.  I think the thing that kills me is not knowing if this game that I'm making is even going to turn out good.  If I'm going to have something that I like at the end of this then yeah, in my mind of course it's worth it.  It would just be depressing on the other hand, though.  I suppose in the end, all we can do is give it our best try.
Logged

Pixel Noise
Level 8
***



View Profile WWW Email
« Reply #29 on: January 13, 2016, 06:00:49 pm »

I'm no dev - but if you feel like the project is becoming too large or overwhelming - is there a way you could produce a sort of demo version, or smaller scale version of the project? That way you can see if, in limited capacity, it ends up being what you wanted?

Also, I know you mentioned trying to avoid some of the ultra detailed micromanaging of the Civ series - is there a way you can stream-line things even further? I don't know if that would completely wreck your vision of the game - but it may take some pressure and time off of your development cycle.

Logged

Pixel Noise - professional composition/sound design studio.
 https://soundcloud.com/pixel-noise
 https://twitter.com/PixelNoiseMusic
 https://www.facebook.com/pixelnoisemusic

Currently working on the Underworld Dungeon OST!
https://forums.tigsource.com/index.php?topic=50972.0
VampireSquid
Level 0
***


View Profile
« Reply #30 on: January 16, 2016, 06:38:02 am »

I think it will turn out good if you put enough polish in.   I agree with Pixel Noise that you should consider working towards some type of demo.  Even if you don't release it to general public you could provide the demo to some of the review sites and that way get some feedback on the game.   Motivation is such a huge factor, that extra bump from some good reviews could power you through for another year or two.
Logged
Sub
Level 0
**



View Profile
« Reply #31 on: October 22, 2016, 01:22:51 pm »

I appreciate it guys.  I agree that motivation is huge, and working towards a playable demo should definitely be the goal.

In any case, I have a contribution to today's screenshot saturday







« Last Edit: June 19, 2017, 06:10:07 pm by Sub » Logged

Sub
Level 0
**



View Profile
« Reply #32 on: June 10, 2017, 07:50:17 pm »

I'm still working on this and have been making good progress recently.  There's still a lot of work left to do, but I feel like I can see a light at the end of the tunnel now.

I've changed the name of the game from "It Always Ends In Nuclear War" to "It Usually Ends In Nuclear War".  The name was meant to be a commentary on human civilization, but I decided to change it as I was afraid that the old name could have given the wrong impression about the gameplay. 

I've also changed the graphics a bit.  Previously I had a pronounced psuedo-3d height visual effect going on.  I liked the way it looked and I put a fair amount of work into it, but it was purely aesthetic and it prevented me from using tile colors to display information about a given tile. 

For instance, in most if not all other similar 4X games there are a set number of distinct tile types.  In Civilization II for example,  a tile could either be  grassland, swamp, forest, plains, desert, or tundra.  Each tile type had a specific food, production, and science output.  I want the output of a tile to be somewhat dynamic, and I want the player to more or less be able to tell the output of a tile by its color alone. 

So I still have a base set of tile types which have a specific food and production output, but the tiles are blended in with their neighbors, and the outputs are averaged together (as is their color).  On top of this, I'm also further applying a bonus to production or food to select tiles, and I'm using the the shade of a tile color to communicate this to the player.   Darker tiles are better for production, lighter tiles are better for food. 

I can't say how anyone else will receive it, but I really quite like how it turned out.  At least in my head, lighter green tiles look more like grassland tiles and accordingly have great food output, and darker green tiles look to me more like forests and have great production output. 

The reason I'm happy about this is that most maps will have huge swaths of land which are a single tile type.   In the old system these tiles would all have the same output and I honestly don't know how I would go about balancing that.  This new system allows me to have those large swaths of land which are the same tile type, but vary their output depending on the shade, which for example would make some tiles in a huge swath of desert still desirable.

I've done a lot of other stuff since then, but those two are I think the biggest and most obvious changes.

Older look


Screenshot fro a few months ago.  The map is completely flat here


Screenshot from yesterday morning.  I readded height to the map here, but the tile shadows from height are no longer present.  Kind of a compromise between the two

Logged

Sub
Level 0
**



View Profile
« Reply #33 on: June 19, 2017, 06:45:22 am »

Today I'm going to try to implement an algorithm which picks city locations for the AI.  

If you've ever played civilization, you should have a good idea on what this means, as it's more or less the same problem from that game.  Maps in my game are much larger than in Civilization, and my game ticks along at like 1 turn every 600 milliseconds, so performance is a pretty huge concern.  

I'm still debating the exact city ring size, and I'm going off memory here but I think cities can currently grow to a maximum of 5x5 tiles.  You can see the maximum growth of a city by the black outline around the center city this screen



If anyone has any suggestions on a good way of going about doing this, all I'm ears.  I've come up with something that I think will work (high level code outline below), but I wouldn't be surprised if there's a much better way of going about it.
Code:
// Only one  object of this class will be instantiated, and each AI will talk to this object in order to get a city location
class AI_City_Location_Mapper
{
private:
    // first dimension is number of continents on the map (where a continent is a group of connected land tiles)
    // second dimension is a vector of tile indexes where cities should be placed
    std::vector<std::vector<int>> CityLocationsByContinent

    // where the magic happens
    void calculateCityLocations(int ContinentIndex);

public:
    // city locations are calculated for each continent on map generation and cached in the above array
    void onMapGeneration()
    {
        CityLocationsByContinent.resize(NUMBER_OF_CONTINENETS);
        for (int i = 0; i < NUMBER_OF_CONTINENETS; i++)
        {
            calculateCityLocations(i);
        }
    }

    // if the human player settles a city, the city locations for that continent might need to be reworked to make more sense.
    void onCityCreation(int ContinentIndex)
    {
        calculateCityLocations(ContinentIndex);
    }

    // basically, the above two functions are the only time when city locations are going to be updated.  

    // when the AI wants a location for a new city, it calls this function, and passes the unit index for the settler in question.  
    // the game iterates through each possible city location for the continent the city is on, and does a simple calculation
    // based on distance and city desirability to determine which city location to settle
    // -1 if no city available
    int requestCityLocation(int UnitIndex);
};


For calculateCityLocations(), I'm thinking that I'm going to divide the map up into a larger grid, with each cell in this larger grid representing let's say a 5x5 group of cells.  Perhaps that size will be determined by the city ring size.  I then think I'm going to assign a city location in the center tile of the actual grid for each cell in this large grid.  

So essentially calculateCityLocations would be iterating over each city in this list and moving the city location over 1 tile for each loop iteration, based on the best location of its neighbors.    If the initial city location happens to be on a water tile, I'll have to do a check to make sure that doesn't happen or fix it when it does.  I already have a function which ranks how good any given city location is, but I'm going to need to expand that function to take into account tiles which are already owned by another city (obviously those tiles would be degraded in importance).

I'm aiming to do all of this today, but we'll see how it goes.  Like I said in the beginning, if anyone has a better idea on how to go about doing this, I'm all ears.  This was the best I could come up with for now.
Logged

Pages: 1 [2]
Print
Jump to:  

Theme orange-lt created by panic