New water and glare on objects with different material!Now my engine supports NormalMap and SpecularMap.

Added:

Hello dears!

In this short extraordinary diary we decided to tell you about the new system of city expansion, which was added to the game. As you may remember, the original structure of urban areas had a pronounced square structure:

To begin with, this was quite enough, but since this graphic element was quite conspicuous and caused natural questions from some users, it was decided to give it a more meaningful form, especially since it was already in our immediate plans.

To do this, it was necessary to develop a set of urban areas and their parts, which would give the growing city a visually more natural and pleasant look, as well as the logic of their interrelations.

The end result is a set of models that, in theory, should take into account all possible expansion options for flat terrain:

Now the starting version of the city looks like this:

As you can see, due to additional extensions of residential areas, which are not actually them and serve only for decoration, the city got a more natural and visually pleasing silhouette.

For those who are interested in the logic of the use of district models in the expansion of cities, under the spoiler will be attached a number of technical screenshots with explanations:

The initial version of the residential area:

To smooth its square appearance, additional elements are added to it. These elements, as noted above, are not independent areas, but serve only as a graphic design:

The city can expand in any direction. For example, suppose the following urban area appears to the right of an existing one. The current right extension will disappear, and the following type of area will appear in its place:

If the area appears at the bottom left diagonally, it will have a square shape, and its additional extensions the following form:

If the area is built on top of the original, the city takes the following form:

Built a lower right diagonal from the starting. The second built area is replaced by another modification, and an additional area from the bottom to the U-shaped:

Although all possible options for development are not clearly presented here, following this logic, theoretically, allows you to build cities of any possible form.

Summarizing, you can see a screenshot of a large city, built in the game in this way:

It's been a month and a half since my last diary, a huge amount of work has been done during this time. So that was my task sheet, without considering the tasks that I perform on in-game mechanics:

All tasks were performed not in the order in which they were located in the list, and there are no small tasks that had to be solved along the way. Many of the tasks did not concern my participation, such as Alex slowly changed to buildings:

Work on selection of color registration of a terrane:

The option that we have chosen to date will show a little below.

The first thing I had the task of implementing shadows from objects on the map and the first attempts to implement through Shadow map gave this result:

And after a short torment managed to get this result:

Next, the task was to correct the water, pick up her good textures, coefficients and variables for better display, it was necessary to make the glare on the water:

At the same time, our small team joined another Modeler who made us a new unit:

The model was with a speculator card, but the support of this material was not in my engine. I had to spend time on the implementation of special map support. In parallel with this task it was necessary to finish lighting at last.

All as they say, clinging to one another, had to introduce support for the influence of shadows on the speculator:

And to make adjustable light source to check everything and everything:

As you can see now there is a panel where you can control the position of the light source. But that was not all, had to set an additional light source simulating reflected light to get a more realistic speculator from the shadow side, it is tied to the camera position. As you can see the armor is gleaming from the shadow side:

Wow how many were killed of free time on the animation of this character, the exact import of the animation. But now everything works fine! Soon I will record a video of the gameplay.

Meanwhile, Alexei rolled out a new model of the mine:

To make such a screenshot with the approach of the mine had to untie the camera, which made it possible to enjoy the views:

In the process of working on the construction of cities, a mechanism for expanding the administrative zone of the city was implemented, in the screenshot it is indicated in white:

I hope you read our previous diary on the implementation of visualization system for urban areas:

As you may have noticed in the last screenshot, the shadows are better than before. I have made an error in the calculation of shadows and that the shadows behind the smallest of objects and get the feeling that they hang in the air, now the shadow falls feel more natural.

The map generator was slightly modified, the hills were tweaked, made them smoother. There were glaciers on land, if it is close to the poles:

A lot of work has been done to optimize the display of graphics, rewritten shaders places eliminating weaknesses. Optimized the mechanism of storage and rendering of visible tiles, which gave a significant increase and stable FPS on weak computers. Made smooth movement and rotation of the camera, completely eliminating previously visible jerks.

This is not a complete list of all solved problems, I just do not remember everything

Plans for the near future:

- The interface is very large we have a problem with him and really need the help of specialists in this matter.- The implementation of the clashes of armies.- The implementation of urban growth, I have not completed this mechanism.- Implementation of the first beginnings of AI, maneuvering the army and decision-making and reaction to the clash of enemy armies. - The implementation of the mechanism storage conditions of the relationship of AI to the enemies, diplomacy.- AI cities.

It's been over a month since the last development diary. I have to say that I wanted to post a diary before, but faced with a intractable problem, which spent a lot of time. But all in order.

According to the development plan, the first contact with AI was implemented:

At the bottom of the screenshot you can see messages about crossing the army control zones with another army and the city. Now we had to develop an interface element that would display the event data:

This screenshot in the upper left corner shows the implementation of UILabel with the ability to transfer text by words. An important element of the interface that is useful in the future. In the lower right corner, above the end of the course is now visible various messages, hover the mouse over them POPs up a hint (also a new interface element), with a short description of the event. By pressing the right button, the event can be closed without making any decision, and the left button can open the message.In this case, when you click on the event button will be the first diplomatic contact in the game:

It was further implemented the first maneuvers of AI. AI walks on the map and tries to determine the boundaries of its continent. In the video at Dukat https://youtu.be/69G51u_Mq3g?t=693 that is the moment where he runs over the enemy army, which pays no attention to him, because busy with study card

And somewhere in this place and at this time, I was faced with a problem, a performance problem. Our Modeler has a powerful modern computer of red Assembly. But it the game is terribly slow shipping a single core processor. The reason is simple-there are a lot of cores in new processors, but in fact they are less productive in single-threaded applications. And that moment I had a render in one stream. But in fact, the reason was not so much in this. And in the process of finding problems, I decided to count how many polygons we have in the scene:

On the middle map at the maximum distance and a large cluster of palm trees - it's just scary! 15 824 756 triangles! Almost 16 million!!!

After a bit of map generation, I found a place with 16.75 million.

Although here is a similar place with trees gave only 8.5 million triangles:

And in the middle stage consisted of about 4 million:

In General, I was glad that my render copes with such a huge number of triangles, but their number was excessive. It was necessary to optimize the number of polygons in the models.

Next, we have altered palms - Poligona on the palms was reduced in 10 times. 600 - 700 against six thousand of polygons per pack.

While there was parallel work on the models I have been trying to simplify the geometry of terrain. Here's what it looked like before optimization:

And after the first steps:

But it was all done by a simple method — all smooth tiles were replaced by two triangles instead of 882.

But there were still flat places that could be optimized, and I began to build polygons from those triangles that had the same height:

Build on them convex-concave contour (Concave Hull). With Convex Hull ω was not a problem, I already used the Graham scan (Graham scan). But the construction of Concave Hull has a problem... Information on this topic on the Internet was quite difficult to find. I had to write the implementation of algorithms from scratch. I will not lie if I say that I read a dozen different dissertations on this topic. But all the proposed algorithms gave an approximate result with some error. After a week of torment and pain, I came up with the idea of my algorithm, maybe I'll describe it someday As a result of two weeks of torment, I got the desired result and was able to build Concave Hull of almost any complexity, bypassing the set with holes, just dividing them into 2 halves of the hole. Received contour and triangulated it:

Getting the output of such a result:

The fog of war has also been simplified:

And in zones where was present only fog of war it turned out only about 300 polygons:

But in the end I was upset with the result and tell you that these two weeks I spent in the shuffle... The algorithm developed by me gave a significant increase in performance when rendering, as the number of polygons on average was reduced by 60 — 70%. But the generation of the map began to occur 10 times slower.... the algorithm was time-consuming and difficult.

3 days I lost in ATOM RPG removing stress:) Even at work did not go. Thank God we have at this time the thermometer went off scale at the border -44 - -46 degrees Celsius. And I gave my melancholy for an excuse not to start the car.

And before the new year holidays, enough to play, but the truth is not passed the game, I gave a new lightweight version of the algorithm, which was suitable only for my conditions of tiles. Data calculations for optimization were not noticeable against the background of map generation and the number of polygons decreased by an average of 40-50%.But there are artifacts when rendering water, I had to rewrite all the algorithms associated with water.Here is the result:

Anatoly meanwhile made unit of nomads:

While he lies resting

While working on optimization, I came up with the idea of how to change our mountains.

Mountains have become more embossed, it is noticeable without texture, as the texture is now not suitable for them:

On the grid, so in General the differences are obvious:

It remains the case for small — need a new texture of the mountains.

The next step was to rewrite the resource loader and map generator. Along the way, remaking the start menu for all these things:

Now loading of resources goes in parallel and then map generation begins.

I did a great job in dividing the render into 3 streams. The whole difficulty was in synchronization. Now we have one thread responsible only for drawing, the second thread for recalculation of the visible space when moving the camera and other interactions with the map space, and the third thread is responsible for animation and communication with the server part.

And Yes, we now have a server part responsible for all events in the game and for the AI. In turn, each AI player is a separate process.

Hello dears!It's been more than a month since the last diary. Frankly, it was a hard month for me in terms of development.

Most of the time was devoted to the construction of the structure of society, the interaction of the population, the transition from one stratum to another. It took a lot of time to build economic ties.

At one point, I decided to throw some scheme of our project, which allowed a little systematize all my thoughts and see the degree of implementation of certain tasks. Who is interested to assess the scale, you can see the resulting scheme: https://mm.tt/1209438933?t=mBE5c38pFT

In between work on the gameplay part of the thing with the mountains, and returned them again to the ice caps:

Alexey made new optimized palm trees-270-350 triangles on one subtile

Great result with such a landfill!

I also managed to experiment with the user interface and made this sketch:

And more or less brought him to mind:

I prefer this interface concept. Before the interface was very heavy and it looked as if looking into the tube. But now clearly lacks any curls

Then I experimented with transparent objects, we had an idea to implement such fields initially:

But, in the end, we decided to focus on such an option:

In a long box I had the task of building walls around our settlements. Alexey made models, already as half a year ago, but his hands did not reach them. I had to dust them off.:

The problem was not trivial, it was necessary to carry out a lot of calculations to determine the need for a wall with an entrance, here is an example of such a case:

And here is masterpiece deciduous trees on 800 triangles on subtil:

Then I broke everything.:

There came a ten-day period of optimization and rethinking of everything that was done on the render. And all this is due to the fact that I came up with one idea, how else to optimize our render. Unfortunately, I was not able to implement all my ideas, so to speak, theoretical calculations went against the practical results.

But the result was still impressive. The first thing I want to mention — we now have 16 subtiles on the tile, and was 9. Before mesh subflow was 3x3, 4x4 now. 484 tops against 1089 now. The number of vertices per tile has increased 2.25 times, and the performance has remained at the same level and the map generation is now faster, as the most time-consuming process of normals calculation is now faster. This happened due to the fact that I removed from the calculations all the numbers with a period after the decimal point, such as 1\3 and 2\3. Now all calculations on both CPU side so GPU are faster.

This is especially noticeable on large and huge worlds:

The increase in the number of vertices and subflow allowed to implement more realistic mountains:

Now our render takes out 32 million polygons !!! True to my GTX660 IS only 10FPS

Alteration of the whole world on the structure of 4x4 sub-tails resulted in alteration of generation of mountains, hills, rivers, scaling of all models. Which together took those 10 days.

- Also, the following points have been implemented about which I would like to briefly tell: - Normalmaps for the whole of terrane. - An error with the calculation of normalmap. - Corrected an interface error on the containers voznikayuschaya when the MouseEntered MouseExited events. - Go to / from full screen mode by pressing F11.

Hello dears!This month we had the following tasks:0. Decide whether we need to implement AO (ambient occlusion) or not.1. Screw the optimization of the terrain, i.e. return it to the previous level.2. Implement the creation of a settings file and its saving.3. Loading textures depending on quality settings.4. To implement the preloading of the objects.5. Tie different mines, and implement a new type of buildings-career.6. Do as I call them multiobjects. These are the objects on the map that will be drawn by several instancing objects.7. Implement a window interface object that can be dragged and dropped. Including the second screen, respectively, to implement support for the second screen.8. And finally to finish the creation of new cities with strata and the first economic ties.

1. Screw the optimization of the terrain, i.e. return it to the previous level.2. Implement the creation of a settings file and its saving.3. Loading textures depending on quality settings.4. Tie different mines, and implement a new type of buildings-career.5. And finally to finish the creation of new cities with strata and the first economic ties.

On the project as before continued to work at least 12 hours a day. But one day I forgot the flash drive at work with the project and did not do it at home...And after this, so to speak forced rest, the next day was productive.Decided to practice this approach to development. In the end the performance like, has increased, probably affected tiredness. As a result, I took a two-week break from development. Week vacation and a week was given to all the various accumulated personal and work events.

After such rest the first week left on performance of the list of small tasks:- fixed a glitch with trees that appeared in the ice;- made snow Christmas trees;- corrected models of deciduous trees;- corrected generation of mountains, reduced height of peaks, reduced snow caps;- fixed a bug with square banks.- fixed new textures of mountains.- completed mapping of surfaces (swamps, ice) now they are clearly displayed according to the grid of 4x4 sub-tiles;- fixed pathfinding algorithm considering new mountains.

The first of the main list were made mines and quarries:

And we have one small miracle of the world:

Next made loading textures depending on the selected quality, and had the same Tinker with this seemingly easy task.

In General, I implemented 4 out of 5 main points. Again deprived gameplay.Today, with the engine stopped. It remains only to correct the generation of rivers. And all next month only gameplay on the agenda. Try

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org