Jump to content

  • Log In with Google      Sign In   
  • Create Account

DishSoap

Member Since 13 Sep 2012
Offline Last Active Apr 23 2016 11:51 AM

#5272380 Are computer skills necessary for becoming a game designer?

Posted by DishSoap on 23 January 2016 - 11:57 AM

It is also common to have technical designers on a team. These are designers who may implement some design in whatever scripting language the game engine supports. Therefore, if you are familiar with programming you'd open a larger set of jobs you are qualified for. 

 

Otherwise, It is good to be comfortable with technology. It is often the case that tools will be built in house that you will need to use. Some examples include achievement editors, item editors, etc. These tools might spit out to an intermediate file format, be it json, xml or even insert into a database. It is not unusual to have to merge these files with other designers changes or even edit them manually. You will also need to be comfortable using version control which can be intimidating at first.




#5271545 [SFML] My vector array is only drawing one sprite

Posted by DishSoap on 17 January 2016 - 08:34 AM

Turn this part:

troll = new Troll;

troll->setPosition(std::rand() % 600 + 1, std::rand() % 600 + 1);
enemyVector.push_back(troll);

Into this:

for (int i = 0; i < 10; ++i)
{
    troll = new Troll;
    troll->setPosition(std::rand() % 600 + 1, std::rand() % 600 + 1);
    enemyVector.push_back(troll);
}



#5270865 What is z-plane?

Posted by DishSoap on 13 January 2016 - 09:25 AM

It is safe to imagine the Complex plane as a Cartesian one, yes. The quote you referenced is explaining how you can extract the x and y components of a Cartesian plane from an equation with complex numbers. For example, if you had the equations:

 

z1 = 1 + 2i

z2 = 3 + 6i

z3 = 7 + 8i

 

Where i represents imaginary numbers.

 

You'd be able to extract the points (1, 2), (3, 6) and (7, 8) and plot them on an x-y plane. 




#5252716 Starting Game-Dev

Posted by DishSoap on 17 September 2015 - 12:33 PM

I would honestly recommend Unity if you hadn't said not Unity. The amount of documentation and tutorials littered across the Unity website and the internet is vast and has all you need to build such a project. In fact, there is a template you can download off the unity store that is a small 3D platformer prototype. 

 

Now that I've suggested exactly what you don't want to use I will try to address your question better: 

 

I don't think Unreal is too much for such a project. They also have a platformer as a template: https://docs.unrealengine.com/latest/INT/Resources/SampleGames/PlatformerGame/

 

Otherwise you can use a 3D library such as Ogre3D or Irrlicht. Here is a good list of engines if you want to stick with C++, with a list of pros: http://gamedev.stackexchange.com/questions/21/easy-to-use-cross-platform-3d-engines-for-c-game-development.

 

Remember, when building games for academic purposes it is often not extremely important what engine or toolset you use. You will get a lot of the same knowledge no matter what you choose, so don't stress too much about which one to use. Grab one that looks good to you and have at it, you will learn a lot!




#5249909 Find tile coordinates within a given radius

Posted by DishSoap on 31 August 2015 - 09:05 AM

You could do a breadth first search for all available nodes to depth N, just make sure you remove diagonal tiles from the adjacency lists. For example:

ArrayOfNeighbors getNeighbors(int x, int y)
{
    return Array(Coord(x + 1, y), Coord(x - 1, y), Coord(x, y + 1), Coord(x, y - 1));
}
ArrayOfCoordinates findCoords(int centerX, int centerY, int radius)
{
    ArrayOfCoordinates arr;
    QueueOfCoordinates frontier;


    frontier.add(coord(centerX, centerY));

    int i = 0;
    while (!frontier.empty() && i++ < radius)
    {
        Coord coord= frontier.dequeue();
        if (cord not in arr)
            arr.add(coord);
        foreach (adjacentNode to coord) // Use getNeighbors or getUniqueNeighbors(ones not seen in arr)
            frontier.enqueue(adjacentNode);
    }

    return arr;
}

I'm sure the above is wrong, syntactically, in some way. But I hope it's a clear example, do a bfs up until depth radius. You'd likely want to use a set or something for what you have seen and use a variant of getNeighbors like getUniqueNeighbors to find all neighbors that aren't in your array.




#5249881 Turn Based Game AI processing display

Posted by DishSoap on 31 August 2015 - 07:41 AM

Hello!

 

I think for a turn based game a queue for actions is the correct solution. It would be good to extend it even further to every character in the game even. Something similar to the example below:

// Have each of your characters inherit, or have, something that can be en queued in here
Queue characterQueue;
List waitList;

TurnQueue(priority) {
  // You could base priority on some stat or anything
  characterQueue = new Queue(priority);
}

Update() {
  character = characterQueue.Pop();

  // Insert character into wait list (before or after update)
  waitList.Insert(character);
  // Start and update the characters simulation
  character.Start();
  character.Update();

  // If the queue is empty all characters back into it
  if (characterQueue.Empty())
    AddListToQueue(waitList);
}

In regards to the frequency of the Update call. You can call it as often as you like and check if a character is currently in the middle of their move and if so return, otherwise continue and let the next character go or you can explicitly call it when a character has ended their turn.

 

I like this strategy because it can make solutions for some turn-based features a little easier. You can, for example, make the priority for the queue be some sort of 'agility' stat so the character with the highest agility will come first in the queue. You can also keep track of how often the queue empties and this can give you a number representing how many turns have elapsed since the start of battle. You can use that number for any status effects that might need to last for a certain number of turns.

 

As for your desire to represent things your AI is doing visually, it seems like a normal use case for whatever rendering strategies you are using. If you had a regular character moving around and needed to draw its path you'd probably construct a list of nodes that represented its path and send that to the renderer/gpu/fooBarDrawingThing for visual representation. You don't need to make it complicated by introducing a separate planning thread, I think. Maybe I am misunderstanding, do you want to display, visually, what the AI could do in the future? 




#5241214 OOP design question

Posted by DishSoap on 18 July 2015 - 09:39 AM

Hi there!

 

So I don't dislike the inheritance scheme or necessarily have anything against that design. For me, and what I've seen in the past is to treat a projectile just like a chunk of data and have a separate modules handle the simulation of projectiles. I guess something like below is how i'd do it:

struct Projectile
{
  unsigned int id;
  unsigned int type; // <- maybe?

  float speed;
  float size;
  // ... Plenty of other things ... //

  bool flags;
};


In some sort of simulation module or class.

for (auto proj : projectiles)
{
  if (proj.flags & LINEAR)
    applyLinearSimulation(proj);


  // Do specific simulation things here


  if (proj.flags & PROJ_HOMING)
    applyHomingSimulation(proj);


  // etc ...


  // etc ...
}
 

You can achieve the same exact thing by giving the projectile knowledge on how to simulate itself via an update function and have it inherit from some sort of base class. I guess what's nice about above is you can easily mix and match different behaviors and to create a new projectile often doesn't take any new code but rather different data. 

 

As an example. Say you had a rocket projectile class that had its inheritance scheme and also had an acid spray projectile, or something. Now you want to create a new rocket acid spray projectile shot. Well it's possible in the inheritance scheme but you'd probably make a new sub class for it. If you treat the projectile like data you could just create a projectile and set the flags for both rocket and acid spray. Obviously, in practice, it may not always be so simple but that's the idea.

 

As for selecting items. I'd just give projectiles an ID or type and check on that for knowing what you have selected. 

 

I'm sure there's lot of right designs for this problem. This is how I'd approach it though.




#5240068 Unity or C++?

Posted by DishSoap on 13 July 2015 - 08:09 AM

Hi there!

 

If you would like to make a 2D game using C++ I would recommend SDL, https://www.libsdl.org/index.php or SFML http://www.sfml-dev.org/. I have not used them in a while but I believe the biggest difference between choosing one of the two is the style of the API. SDL has a C api so it does not use C++ features you might be used to like classes. SFML on the other hand has a nice class based abstraction.

 

If you want to make a 2D game in Unity it's completely possible as well. I think it comes down to preference, really. Unity is a great engine for building games and you will learn a ton no matter which route you go down.

 

As for job opportunities. In my experience, in interviews for game companies you will likely be tested on lower level knowledge. Often ideas independent of languages(the graphics pipeline, graphics theory, math, algorithms and data structures). These are things you will learn bits and pieces of no matter what tools you use. It's just a consequence of making a game. Having said that, most game companies I have seen would like you to have experience with C++, whether they use Unity or not. So I think it would be a greater benefit to know C++, if your primary goal right now is to get a job. 

 

In my opinion, if you are new to game creation, you shouldn't worry about it. Just worry about making games whichever way makes the most sense to you and the job will come in time.




#5237487 Lineup of Books For Beginner

Posted by DishSoap on 29 June 2015 - 08:23 AM

I have read bits and pieces of Real Time Rendering, for me it has been more of a reference when I am implementing my own collision detection than reading it from start to finish. It is a really great book from what I've seen though so I don't want to deter you from reading it start to finish, just my two cents.

 

I'd add a 3D mathematics book to that list. I was pleasantly surprised on the value I got from diving into some mathematics when doing things like matrix transformations, vector math and lighting, what not. The book I have read on the subject is: Mathematics for 3D Game Programming and Computer Graphics, Third Edition by Eric Lengyel. 

 

I'd agree with braindigitalis in that the best thing you can do is just build a game or something involving graphics in parallel with the books. It's important to practice the concepts on your own. In a book I have been reading, Computer Graphics Principles and Practice the author encourages a "3 step approach" to learning a subject, that is application-theory-application, or something similar. So try something before you seek a more theoretical understanding of it and then apply it again. It will give you a better understanding of the subject that way I think. So implement some game or some bits and knobs to an engine in your mind, go read about it and do it again. smile.png




#5195414 Unity or C++?

Posted by DishSoap on 29 November 2014 - 05:49 PM

I guess my only advice would be to use what feels right and put people's presumptuous comments aside. If you feel like you are learning and are inspired to build your game with whatever technology you pick up you are doing good.

 

 

 


More importantly, should I be focusing on making games with "pure" code, in other words building my own engine/physics? I'm torn here. I'm halfway through the game in Unity, but I'm not sure if it's what I want to be doing.

 

So there are tons of aspects to game development, if you are interested in coding physics or graphics do that. If you are interested in coding the logic or AI for your game, do that instead. Pure code is an interesting bit of vocabulary, to me if you are writing C# or Javascript or whatever Unity uses for scripting you are building pure code.

 

There is no right or wrong answer when it comes to what tool you should learn. If you're halfway through a game in unity finish it! Independent of platform and tools, It is awesome to be able to finish a game and say it's done.




#5195136 Critique My Implementation Of Pong?

Posted by DishSoap on 28 November 2014 - 03:49 AM

This all really good stuff guys. thank you for your time.

 

Hrm, I am also going to critique your file structure while trying to not change your design decisions too much:

 

  • You have non-game specific code in your pong implementation please separate 'engine' code out into it's own module or library
  • Separate your header and source files into different folders (include and source)
  • Remove dlls from your source folders and put them in their own external library folder
  • Shader, material, texture and other resources should be in their own resources folder
  • A Paddle shouldn't handle it's input, take that out into a PaddleController class so you can easily add AI to your paddle.
  • Remove boiler plate code from main and turn it into a Game class, inherit from that when making Pong
  • Remove all magic number values from code and put them in json or xml files that describe things like game specific data (Paddle initial positions) and engine data (window size, title etc)

Once you do this a better critique can be done.

 

I worked on a lot of these points tonight, It's almost ready to push. My next push, hopefully tomorrow, will be a complete reorganization of file structure, I have refactored engine code into a new project and made subdirectories include/src in both the pong and engine projects.  

 

The PaddleController/Game Class and file based values will definitely get my attention after my next commit. These are all really good points I should have considered from the beginning. I will need to find a decent JSON library for c++ or wrap a simple config reader into the engine. Anything is better than my magic numbers.

 

 

Seems good to me, maybe a little straight to the point: you have lots of gl* calls in various files, when them probably stay better in a single "glwrapper" thing, and the same for glfw calls (input!).

Functional, but a bigger project will deserves a bit of refactor.

Good job anyway!

 

Thanks! I will definitely look into a wrapper for a lot of my gl/glfw code. 




#5195053 Critique My Implementation Of Pong?

Posted by DishSoap on 27 November 2014 - 04:09 PM

Hi everyone!

 

I am a semi-experienced programmer but a very novice game programmer. To learn I have been building a simple implementation of pong, after it is done I plan to move onto some other simple game implementation. I was wondering if anyone wanted to critique my work? I realize it is probably very bad, so don't worry about hurting my feelings :). My hope is to build a few simple game implementations and replace piece by piece the OpenGL wrapper and math library I am using so I can learn more about those subjects. I just wanted to hear some thoughts from some of you guys.

 

https://github.com/AnthonyBrunasso/pong3D

 

All the source is in Pong3D/*. If you follow the readme you can run it if you so desire. The Visual Studio files are included in the repo. Game rules/score tracking have not been implemented yet. Just simple back and forth super exhilarating pong action!

 

Thanks and Happy Thanksgiving(to those who celebrate)




#5115372 Type of game for a newbie?

Posted by DishSoap on 08 December 2013 - 08:58 AM

If by mastering the basic games you mean you have developed a couple of the games mentioned above then I don't see why not. A top down rpg or some creative twist on 2D rpgs wouldn't be too far off. 

 

If you don't have much experience now and are wanting to learn C++, while building a game, find yourself a good book or reference for C++ and program a text based rpg or text based adventure game. That may not sound too interesting but I think you will learn that they are a lot of fun to create. You will be amazed at how much you learn about a language from coding that style of game as well. 




#5115266 Type of game for a newbie?

Posted by DishSoap on 07 December 2013 - 09:42 PM

|EDIT|

I didn't answer the first part of your question so here that part goes... I would focus on creating easy clones for a while, pong, space invaders or asteroids are all excellent choices. After that you can move on to games a big larger in scale, perhaps a simple platformer or a puzzle game. The idea is to start small in scope and progress onto larger and larger projects, you can't learn to run before you can walk! Programming is the same way.

|DONE EDIT|

 

It all depends on your preference and what you know and want to learn. Is there a certain language you want to learn or one you know already?

I don't believe those aspects to be terribly important, but if your goal is to eventually program a game using technology X and Y it would be best to recommend some APIs and languages that would eventually guide you there.

 

I personally started game development with C# and XNA, a lot of people around here might suggest using something more current, but for a beginner I think you could still learn a ton really quickly using a XNA or MonoGame with C#.

 

If you know any C++ you could use a graphics library such as SFML or SDL for graphics.

 

There are plenty of game engines out there these days too, while I haven't personally used it, plenty of people use Unity to great effect. 

 

The possibilities are nearly endless smile.png. Is there a certain direction you were leaning?




#5113269 Is using static variables for input engine evil?

Posted by DishSoap on 30 November 2013 - 09:24 AM

At first, I would pass the input engine over to objects that need it, for example the Player. Every time I create a player, i would pass the input engine over to it, like this: player1->inputEngine = inputEngine;

You have bigger issues than the use of statics.People think of input as events because in event-based applications they are.Games are not event-based (there are of course events in games etc., but they are not event-based like applications are), and input in games is not an event.You don’t press a key and then directly send that to a character and make it jump.You collect input events into a queue and then the game manager reads them on each cycle, and then at a specific point inside the game loop you handle inputs and the jumping of the character. Additionally, letting the player character handle its own input is flawed; the character then needs to know more about its surroundings then it otherwise should. For example, if the character is in the air it should not be able to jump again. Now the character class needs to know about the physics engine to get information as to whether or not it is on the ground to decide if jumping is possible.The character is a slave to the physics engine, not the other way around. Note of course that that does not mean the physics engine knows what a character is, it just understands certain properties that the character has and a higher-level class (such as the engine itself) gets just that data from the character class and feeds it to the physics engine.Handling input is done at a much higher level than at the character’s level. The higher-level game class knows what characters are and what physics is and what the game rules are (hence it is the game class). I want to reiterate, the game class knows what the game rules are. The game class decides if the character is able to jump in its current situation and it is what contacts the physics engine and possibly other modules (maybe the player can’t jump while a certain light is on or when a sound is playing) before deciding, “Okay, you can jump.”With your proposed design, the character class would be absolutely monolithic, knowing about the physics engine, world lights, and sound engine, when really all it needs to be is a normal game entity with a health bar.L. Spiro

This is a really good way of handling input.

I will be implementing this from now on in my own games. Thank you.




PARTNERS