Jump to content

  • Log In with Google      Sign In   
  • Create Account

We need your help!

We need 7 developers from Canada and 18 more from Australia to help us complete a research survey.

Support our site by taking a quick sponsored survey and win a chance at a $50 Amazon gift card. Click here to get started!


Member Since 25 Nov 2005
Online Last Active Today, 04:20 AM

#5127412 Is it practical to have two instance of a Game class object

Posted by LorenzoGatti on 30 January 2014 - 03:13 AM

Plausible use cases:

  • A "main" Game in an idle/paused state and an unrelated AI-only Game used as an "attract mode" demonstration or as a screen saver.
  • Multithreaded simulations of many running Games sharing read-only data, for example to validate levels or train AI players.

#5124093 Solve path around a given point and radius

Posted by LorenzoGatti on 16 January 2014 - 03:18 AM

The shortest path would have the two straight line portions tangent to the circumference rather than aligned with each other. As a bonus, continuity would be G1 rather than G0.

#5121722 Tower creation system for Tower Defense Game

Posted by LorenzoGatti on 06 January 2014 - 03:01 PM

You might explore unusually complex tower designs.

For example, with a more or less isometric view that shows the side of the tower, towers could be upgraded by adding or widening floors and placing independent artillery or snipers on each floor. Different floors could provide different bonuses: short range (more critical hits or more damage) against ground enemies on low floors, greater maximum range on high floors, visibility above the clouds for very high floors, etc.

#5120646 Name Similarity and Trademark Coverage

Posted by LorenzoGatti on 02 January 2014 - 02:58 AM

I also checked local law sources here (in Turkey) , seems domain registration and marketing activities are considered enough for most cases.

Possibly enough as evidence that you are using a mark, but owning and protecting it is something else.

Maybe Turkey does something peculiar, but the usual pattern of trademark laws is that if A starts using a name, logo etc. and later some troll B applies to register it as a trademark, B might succeed (no conflicting trademark is registered, and A's prior use can be ignored or considered unimportant) and force A to pay and/or cease & desist even if A came first.

That's why trademarks are usually registered far before actual usage (so that A owns the mark and B has no possibility of squatting).

#5120010 Naming time? (how to measure time ingame)

Posted by LorenzoGatti on 30 December 2013 - 04:34 AM

As a player, I'd feel comfortable with standard time units, completely divorced from the real-time variable game speed and appropriately rounded: "grow cannabis - 9 weeks"; "cannabis ready in 44 days", "cannabis ready tomorrow", etc. Dates would also be good: "cannabis ETA: 30 December". The player learns (roughly) how fast days pass at different speed settings and sees data change on the screen.

In a turn-based game, on the other hand, all durations should be given in turns to allow the player to plan exactly: "grow cannabis - 180 turns", "cannabis ready in 23 turns", etc.

#5119480 Design of AI for my Game

Posted by LorenzoGatti on 27 December 2013 - 08:00 AM

  1. If all coins are thrown towards the player, staying still is an optimal strategy that catches all coins. Can you explain coin movement more precisely? Does player motion affect coin movement? Also, how is the player's motion constrained? Looping movement (e.g. along a circle) would make the problem easier.
  2. Assuming that the purpose of the game is catching as many coins as possible and that some running around is needed, a straightforward neural network could be a bit too stateless: AI needs to plan what coins should be caught, and in what order, or let go. With n coins on the playfield, there are less than n!*2^n plans and a relatively long time to evaluate them.
  3. If you really need to use a neural network (homework?) an obvious brute force input choice is the number of coins that will cross each position of the player movement line at each future time (quantized into small bins), plus player position and velocity. You should be able to exploit and enforce translational symmetry along time and possibly space in network structure.

#5118055 A diffrent type of rts.

Posted by LorenzoGatti on 19 December 2013 - 03:26 AM

You could have traditionally large armies with more breeding population (i.e. more objectives and more houses on a larger map) and a level of indirect control.

For example, you could ask for gifted wizards with the effect of making all suitable parents (off-duty wizards or just intelligent characters) automatically breed with each other.

After you get enough wizards, you can ask your promiscuous swingers to pair up differently and give you strong and quick warriors for a while, and so on.

#5117271 Using a PID controller for heading, what error value to use?

Posted by LorenzoGatti on 16 December 2013 - 02:53 AM

You are wrong, the cross product between headings changes sign at 180 degrees (i.e. it correctly chooses the shortest option between turning clockwise or counterclockwise). What happens at 90 degrees is that the cross product magnitude reaches its maximum; and correction for really wrong headings is smaller than for moderately wrong ones. There are two obvious solutions:

  1. You can use atan2 instead of the cross product to obtain a real difference of angles rather than something that only has the right sign.
  2. If you also control position (chasing the target, not only turning towards it) the resulting thrust (to turn back) would compensate the reduced torque when the heading is away from the target.

#5116657 Graduation project ideas

Posted by LorenzoGatti on 13 December 2013 - 04:41 AM

Within the constraints of doing advanced graphics with Unity, I suggest good-looking and efficient antialiasing, both for simple textured polygons and combined with fancier rendering techniques. A number of factors should make it a good course project:

- Crawling textures and jagged edges look as bad today as on the Playstation 1, and they are only marginally less common.
A whole game with adequate antialiasing would be a significant practical advance compared with industry-standard carelessness.

- There is a significant body of existing antialiasing and fake antialiasing techniques to study, implement, compare, and write reports and theses about.

- Antialiasing needs to be tuned for specific objects, scenes, shaders etc. in the game, in many detailed and pragmatic ways, demonstrating attention to details and practical compromises. This kind of work would be much deeper and more mature than implementing something advanced in a tech demo, cutting as many corners as possible, and considering the job done.

- You can collaborate with a game-making team, on a real project, but without confusing your contributions with the work of other people too much. If they do X, you do X with good antialiasing; even rejected proposals are perfectly good for your reports and demos.

#5112711 Math terms for NURBS

Posted by LorenzoGatti on 28 November 2013 - 05:36 AM

I have an application that uses bezier triangle patches to define a hexagonal game board. I am finding that in certain situations the lack of local control provided by bezier surfaces is creating unacceptable visual artifacts. I am now hoping to experiment with triangular NURBS surfaces to see if I can solve some of these issues.
I found a paper that seems rather thorough on the subject here, but I'm have trouble understanding some of the math terminology with my lack of formal math training. Here are a list of things from section 2.2 in that paper that I don't understand.

Congratulations for picking an egregiously terse and badly explained paper with unusual notation. Don't blame your lack of training too much.

In the first paragraph of section 2.2 it says "Let T = {(delta?)(i) = [r,s,t] | i = (i0,i1,i2) (thing that looks like an E) Z3+". I assume that r,s,t are the triangle vertices and that the index i is a number combo like 300, 030, 003 etc. If anyone can explain some of these symbols I would be grateful. I don't know what the vertical line means either.

T is a set of triangles; i is an index consisting of 3 non-negative integers; r,s and t are vertices of the triangulation.

The vertical bar inside the braces of a set definition, here and everywhere else, means "such that": T is the set of triangles such that their indices are three positive integers, abusing for a stealth definition what should be a notation for predicates.

Other vertical bars include projection onto some subspace (used along with the set-definition vertical bar for Ax in section 2.1) and separation between the main function argument and "parameters" such as spline control points (used for M all over section 2.1).

After that there is a knot sequence, which I understand is what is called a knot vector elsewhere, and is just a sequence of increasing numbers like {0,0,1,1,2,2} etc.

No, the knots are points. For each vertex v in the triangulation, we choose n knots (one of which is v).

Then it says we define a convex hull, and the beta symbol seems to be sort of like the index, I don't know what the 'absolute value' lines mean in this context but that symbol seems to have 3 components that add up to the 'order' of the triangle. I am unsure how the index and this beta symbol should be combined to get the desired number sequence.

Here the bars are a completely superfluous absolute value, and there is no "number sequence": V is the convex hull of n knots associated with the vertices of triangle i.

Then it defines a multivariate simplex spline M(u | Vibeta). The u is a two component coordinate (u,v), but I don't know what the line means.

M is the spline that has a 2D variable u (we are restricting ourselves to a surface, but similar definitions would hold for higher-dimensional or lower-dimensional manifolds) and V as its set of n knots, adapted from section 2.1.

Then it defines the basis function with that line again, then a lower case d, with the triangle vertices without the indices but with the beta thingies in parenthesis, 'lined' against the M(u | Vibeta). What does that line mean anyway? The lower case d is also unexplained.

Actually, d is one of the few simple and commonplace definitions: the area of a triangle with the three given vertices. There are a factor of 2 and an absolute value as an artifact of practical computation (for 3D points computing the area becomes a matrix determinant).

Then we have the unweighted B-spline surface. The Sigma operator is something i always have trouble with, but I interpret this as the sum of every index combo multiplied by the point and the basis function and multiplied again with the sum of all the beta combos multiplied by the point and basis function. However, I do not understand what is meant exactly by Pi,|beta|. Pi would be P300, P030, P003 etc, but I don't know what the beta subscript does to that interpretation.

The sum is over all triangles and over all choices of beta for that triangle, i.e. over all basis functions N for the whole triangulation T. Indexing of the arbitrary control points p matches that of the N functions.

Finally, there are arbitrary weights that can be set, and once I understand the indexing system, I think I understand this part as a weighted mean of the above.

Yes, it's the usual weighting and normalization of any kind of NURBS.

If anyone can help me make sense of this I would be super grateful.

I've found a less general but vastly clearer basic explanation of triangular NURBS surfaces in http://citeseerx.ist.psu.edu/viewdoc/summary?doi= and there should be other better references.

#5112430 Industrial revolution strategy (post mortem and ideas)

Posted by LorenzoGatti on 27 November 2013 - 06:03 AM

The central stockpile can be entirely virtual, a mere abstraction for manual and automated management purposes. Actual resource movement can be done between actual places and on the actual road, rail and channel network with explicit trains, ships etc. and automated in the guise of minimum cost network flow problems (given resource producers, consumers and stockpiles, minimize the cost of moving them to the appropriate destinations along the edges of a graph representing places and transport between them). This kind of automation can remove the tedium of ordering transport of materials, collect statistics (how much does it cost to transport a certain resource, on average? Which long or expensive routes are contributing?) and signal to the player that a certain road, rail trunk, channel, river etc. is saturated (rejecting transport of low-priority goods). Details of a certain road etc. can show what travels on it and between what places. There should be a place for both global resource decisions (e.g. I built all possible mines but I need more Iron quickly for warships: buy it from abroad or recycle old ships?) and local transport decisions (e.g. Paris needs so much fish that it has to arrive fresh from Marseille: which railroads should I build in the middle of France?); what's important is making them interesting, nontrivial decisions and cutting the boring or useless details.

#5112414 Industrial revolution strategy (post mortem and ideas)

Posted by LorenzoGatti on 27 November 2013 - 05:03 AM

The easy way round this seems to be to vary the time it takes to produce a single resource. For example, if a fully staffed mine produces one unit of coal every 10 seconds, then an understaffed mine could produce only one unit of coal every 15 seconds.

It's turn based strategy. There are no seconds :)
It doesn't matter, you are simply measuring mine output in coal units per turn rather than coal units per second.

The same 2/3 ratio between the production rate of a fully staffed mine and an understaffed mine can be realized as 1 coal every turn vs skipping production every third turn, 1 coal every 6 turns vs 1 coal every 9 turns, 15 coal per turn vs 10 coal per turn, etc.

#5112410 AMD's Mantle API

Posted by LorenzoGatti on 27 November 2013 - 04:51 AM


What EA does is relevant because they are a large, publicly-traded company whose livelihood hinges on the games they release and the technology used to make them. You may not like them, but you can be damn sure that they act according to what's in the best interest for them as a company. For them, an engineering decision of this level has the potential to cost 10's of millions of dollars (or more) over a few years time.

This kind of reasoning invites conspiracy theories. Maybe EA is so large and full of cash that their commitment to use Mantle is a ploy to pull competitors along with them into a technological and/or commercial dead end: the same number of wasted millions (the cost of developing and adopting a Mantle-based game engine) can be an acceptable "war expense" for a large company that's also pursuing other technology it actually stands behind, or a drain on the limited resources of a smaller company that needs to put too many eggs into one basket and a threat to their long-term survival.

Just gratuitous speculation, of course. Personally, I view Mantle as an experiment in novel graphics API design and possibly as an architectural improvement for the actually important DirectX, OpenGL and OpenCL drivers; the parts that prove useful are going to become OpenGL extensions sufficiently fast.

#5111837 How to run Notepad++ script in CMD

Posted by LorenzoGatti on 25 November 2013 - 08:20 AM

Powershell comes bundled with many Windows version. Try executing
in a command prompt window.

#5111260 About fixed time step update catch up

Posted by LorenzoGatti on 22 November 2013 - 05:30 AM

If its a single player game and its constantly very slow, I think the way out would be to switch down to a fixed number of less logical ticks with comparably bigger steps, when the game estimates it will not catch up. Though that would require the foresight to have the logic programmed for variable timesteps, even if in normal case on fast computer it would always do same fixed timestep.

This approach throws away deterministic simulation; in many game types the slightest variations in numerical values (unavoidable after a single increased timestep update, even with the best computation quality) can lead to large differences in game state later on.