Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 21 Oct 2004
Offline Last Active Apr 29 2013 12:16 PM

#5056691 AI Bots- Why are they hardly used anymore?

Posted by on 25 April 2013 - 11:33 AM

I think it's the explosion of Multiplayer online gaming.  With Game consoles having networks that "find the game for you", no one wants to play against scripted AI computers.  Games that have an MMO element certinaly is not going to have bots (though I understand your comment about training).  I think before when LAN games were popular along with Internet gaming, you found more bots because friends wanted to team up and maybe you didn't have enough players to make a 12 player match.


That said, At my work, we still use bots for simulations and testing (but the entire match is BOTS, no Humans are playing).

#5056114 campfires and kingdoms

Posted by on 23 April 2013 - 11:16 AM

It's a bit funny that you start your entire post with TLDR, which usuaslly serves as a quick summary to a long post before it.


However, if a player spends days creating their kingdom, only to have it get destroyed, I don't think much people will enjoy playing this game.  If it takes under an hour, then maybe, but then it gets into a "RTS vibe" which, if I understand your intentions, is not the design of the game.  You want more progression and a more sim city / RPG vibe?


This is the only concern I would have as a player.

#5052591 OpenGL Camera Up Problem.

Posted by on 12 April 2013 - 04:39 PM

How are you constructing your View Matrix?

#5052282 Simple MORPG project planning

Posted by on 11 April 2013 - 05:52 PM

I remember making a 2D Mario Platforming game in 2 weeks. 

I'm just now finishing a 4-player Everquest (MORPG style) game in 1.5 years.

Sadly, I doubt my 2D platformer will never get old. and the joy of knowing it only took a few weeks.  and a small amount of code.  You might want to aim lower if this is your first game.  If you start smaller, you can reuse your code and it might help before going into an RPG.  (And by lower, it doesn't have to be pong.)

That's what I did, since I am the only one in my hobby projects (programmer, designer, artist, musician).  But I started with smaller projects and gradually finished my goal (RPG).  Though I wanted one that required no server, so 4 Player LAN setup to play with friends, or solo.

I progressed in difficulty by making the following games in order
3D Arcade style game (Guide a rocket through a level) (C++ DirectX)
2D Platformer (c++ direct X)
2D Tower Defense (C++ DIrectX)
3D Fleet Battle (strategy, C++ DriectX)
3D 4 Player Action Pirate ship Simulator/battle ( C++ DirectX/HLSL)
3D 4 Player MORPG ( C++ OpenGL/ GLSL)

Notice that I started small, learned things, and general each new game added a new programming concept.  Be it tiling in 2D, or A* pathfinding in Tower Defense, or Networking in my pirate game.....

Now to answer your questions.

Choose a language everyone is comfortable with.  XNA and C# was really easy.  You might want to look into that as a choice, i've never used python.
But now I'm going to share a lot information, sorta a post mortem on my 4 player RPG i just finished.  I understand yours will be easier as it's 2D, but a lot of this applies.

Obviously the fun part is making classes, spells, enemies, designing the game.  But Soon when you want your game to have a good amount of gameplay and reatures.  There are a lot of subsystems you need to implement in an RPG.  I'm going to blast a ton of questions relating to these subsystems so you can start thinking now.


How are you going to render terrain (probably a tile map).  How are you going to make the tiles and design the world?  You will probably want a tool for that.  Some world editor that lets you paint maps and export them into the game.  That's work to do.

How are you going to handle Quests, Loot, Dialog?  Well it sounds like you have a database in mind, which is similar to what I did.  But then I made a tool to generate and edit items.  One that can create Quests or edit them.  Assign loot as rewards, Assign dialog to the start and end of the quest.  Having a tool made it easy for whoever was DESIGNING the game to just use the tool.  It connected to the database, so everything was content driven on the game.  How do you map dialog to NPCs (maybe tool)?

How are you going to handle combat?  Is it real time?  If so, how to you handle Groups.  How do you update only the players you care about as a server when someone makes an attack.  Can your server handle updating all the AI for every enemy?  and for ones that are fighting players?  If someone casts a spell, you need to alert every player where that spell might exist so they can render it.  How do you display the damage? do you show other players damage?  Do you animate sprites if someone is attacking?  what if they miss? can they miss?  What if they are in casting state? what if they just got hit? or finished casting a spell?  These are all events you need to handle for all connected players.  And handle any lag if this is all real time as well.  Combat was not a trivial system and I limited my game to just 4 players!  How do you handle Agro so that the monster will attack the correct person.  Do you impliment some sort of holy trinity (tank , DPS, Healer) paradign?  What about buffs? ist there a time limit on buffs? who can give who buffs? do they scale? do you have special buffs like HOTS? or Torns(attacker recieves damage)? Do you have stealth?  What about Bladeturn to absorb damage/ buffs that remove after use? 

How to you handle the merchant.  Querying available items for sale.  Implementing some sort of economy system with buy/selling.  I didn't even touch crafting lol.  Is there trading?  How to you stop people from equipping powerful items and breaking the balance of a game. 

Moving your character around can be a challenge in a network game as well.  How do you get the character to move fluently, with minimal ruberbanding for both the user, and other players.  Handling collision detection with the world (terrain tiles).  Maybe handling collision detection with players/enemies/spells (up to you)?  Is it a persestant world like WoW, or instanced like Guild Wars? (obvsiously 2D).

What if a high level helps kill with a low character.  What if this happens when they are in or not in a group.  How do you stop griefing?  How is exp Awarded?  What defines "progress" in your game to keep someone from not playing.  Is there Raids or group only content? Guilds? What kind of Social Interaction are you expecting in your game


Then the subsystem that threw me for a loop.  I didn't realize 50% of my time would be programming the UI!:  What are you displaying on the vitals (hp, mp, xp)? Do you have a group window? a Cast bar?  A spell bar for spells?  How do you handle mouse clicks?  How do you handle targeting (Both UI and click on the model)?  What menu system do you have?  I had lots of tabs like: Personal infomration about their stats, Equipment menu, Inventory menu, group menu, spellbook menu, trading menu, a WOrld map, Game settings.  Do you allow them to change game settings (size of screen) sound ? (for me it was also optimizations like shadows, adv water reflections, render distance, but maybe not needed in 2d).  How do you program the act of someone moving things around in an inventory?  How do you program equiping items?  How do you handle Assignign skill points or spells?  Do you have a Quest menu? How to you show the statuses of quests? which items they need to collect or enemies they have to kill or what reward they will get, or how much exp they will recieve.  UI was the longest part, and I never realized how much of a chunk RPGs UI is.

What happens if someone disconnects or dies.  do you have a bind system? are they penalized?  How do you handle respawning enemies if its a persistant world.  Are there zones?


I'm not trying to put you down, I just want you to be aware of all these situations you need to program and take care off.  Of course you can always simplify your game, but I was just relating my own experience.  I thought it would be as easy as :

Implement Chat system - > Network host/join code -> move character -> combat.


An RPG is really a lot of work.  And I spent a good 3 to 4 hours a day for a 1.5 years coding tools, making the game.  My game has content enough for 60 hours of game play, but it probably couldn't handle Massive players.  It was built and designed around 4.

Hopefully you don't take this the wrong way.  But damn, was it a lot of work.  I'm not saying you can't do it, I'm saying I could not do it if I started even 4 years ago, not knowing much game programming experience.

Sorry for long post.


#5051981 I Want Game Programming

Posted by on 10 April 2013 - 06:48 PM

I'd learn a language first, before even attempting any kind of graphic programming.  If you are serious about programming and college.  Maybe C# would be good choice?  Once you create a few applications, you can easily look into XNA for some easy "pong" like games.
Just a suggestion.

#5051901 I want to make a 2D game engine! Where do I start?

Posted by on 10 April 2013 - 01:02 PM

As someone that has coded a framework 3 times now  (I wouldn't call it an Engine, but more of "reusable classes" for my games), I would advise making SMALL games and then designing an engine/Framework around that. 


After my 4th or 5th game, I scraped my design, and I'm currently reworking my framework to be more "engine" like, and I'm actually happier this way.  But I would have no idea what to look for if i just started by attempting to build an engine.  I'm not sure how much of this is related to a 2D engine since the concepts are easier, but there is still resource management and data structures.  Start small. But always think about "How could I reuse this if I wanted to make another game".

#5051551 How to make a 1Demensional Array Loose Octree?

Posted by on 09 April 2013 - 12:34 PM

This is my Current way of building the Octree.  The actual function takes a depth parameter and recursively calls it until the desired depth is reached.



Function BuildNodes() {
for x
  for y	
    for z
	mChild[x][y][z] BuildNodes

So then I was thinking If I Indexed all the nodes at a certain depth layer by iterating z, then y, then x.  So node[0] is front-bottom-left, and node[n] is back-top-right.  The volume would index by iterating z, then Y, so the entire left side, and then repeating that as you go right (x axis).  I was thinking given the depth level I can calculate offsets I need to figure out where my node should be placed in this array.  I will be storing pointers basically for fast node retrieval on insert/delete operations.

m = 2 ^ depth
xOffset = m^2
yOffset =  m
z = 0  //No offset needed for z


So, Using width, CenterPosition, and Depth, I can calculate these values:

So then I could update the array and point to the correct node.  
depthNodes[ xIndex * xOffset + yIndex * yOffset + zIndex]  = this;  // This being the child node when BuildingNodes()

And that was for the sake of this question.  I would probably make depthNodes a 2D array where the actual call would look like this
depthNodes [depth] [ xIndex * xOffset + yIndex * yOffset + zIndex]  = this;

So would this work? am I over-thinking it? critiques?

#5021971 OpenGL shaders in Windows

Posted by on 15 January 2013 - 05:44 PM

I just went though the same thing.  I was developing my game on Mac, and then after 1 year of getting the game in a good alpha state, I decieded to take that fearful leap and attempt to get it compiled on WIndows. (probably not the best idea to wait a year).


That's when I found out that I had to use glew because windows only had OpenGL 1.1 as mentioned aboved.  Download the glew library, link to it, and I believe there is one init you have to do




I was using GLFW to create my window, and not SDL, but I'm sure this advice works for you too.  I read that you have to call "glewinit()" after you create your window.  So I had to make sure I called glewinit() after my glfwinit() function that set up the window.


Hopefully that helps you out.  After getting GLEW in the project and calling the init, my linker errors were resolved.  Hopefully this helps you some.

#5021888 Help, I've optimized too much!

Posted by on 15 January 2013 - 12:59 PM

So my game was running around 50 FPS, but then I reworked my terrain by implimenting GeoMipMapping, and sending my entity draw calls to a frustrum check instead of just rendering all entities.


I'm now pushing 170 fps, and my laptops fan ramps up and gets loud.  I'm assuming this will cook the GPU after a while.


Is there a way to figure out how much to sleep given the FPS? I want to get it back down to 60ish fps (or some lower value).