Squared'D

Members
  • Content count

    78
  • Joined

  • Last visited

Community Reputation

2426 Excellent

About Squared'D

  • Rank
    Member

Personal Information

  1. Thanks. Making printer software is different from what I've done in the past, but it's good. I hope that I'love be able to put together a nice interface.
  2. [color=rgb(0,0,0)][font=arial]I've been away for some time now. A lot has changed since my last update. As I've said before, I used to teach English in Korea, but in April, my wife and I moved back to America. Now I've been trying to get back into the swing of things. I want to spend more time coding my game, and for a month, I did that, but since I need money for things like food and a place to live, I decided to get a job. Before I came back to America, I started doing some heavy networking and a 3D artist and designer that I've work with put my name into at this company M3D LLC which makes 3D printers. I've been working there for about 2 and a half weeks so far and like the startup environment. Everyone is very motivated and wants to put together a good product, but some the atmosphere is very relaxed. I guess that's what happens when you like what your doing. We joke around, talk, and do startup things like have barbecues. It's fun. It sometimes feels like a University of Maryland alumni meeting because almost everyone either graduated from UMCP (University of Maryland College Park) or is currently attending. I graduated from there in 2003. There's also an engineer who went to Yale. Yeah. He's pretty smart.[/font][/color] [font=arial][color=rgb(0,0,0)]In my spare time, I still do Squared Programming stuff and continue to work on Auxnet. I've gotten a lot of work done on my AI system. For now I've decided to use a finite state machine as a low level framework of the AI system. I want to use the FSM system to develop more complex behavioral systems like planners, hierarchical FSMs, and behavior trees. The initial FSM system is done. Next I want to work on a navigation system that can be expanded to work with different algorithms and different kinds of maps. Then I'll add an extension to the system to allow state logic to be written in AngelScript. Once these things are done, I'll have a solid base. After that, I'll move onto other parts of the game like the animation and weapons systems. Once those are out of the way, I'll revisit the AI system.[/color][/font]
  3. On an unrelated note, a while ago, I made a technical document for a game. If you'd like to take a look at it, you can follow this link. http://articles.squaredprogramming.com/2014/04/sample-video-game-technical-proposal.html
  4. These days, I've been making a lot of progress on my AI engine. The basic framework is running now and you can see that in this video. The AI system is telling the little bot where to go. I'm still in the early stages of development so the path is still hard coded into the demo but I'm happy that I'm now at a place where I can concentrate on actual AI code more. My goal going into to this was to build an AI system that would be useful for different types of games. As you can see in the video, the AI system is working on a simple 2D game. I also have a text based sample project and the main game that I am building this for will be a 3D multiplayer game. Internally, how does this all work? Games are so different that it's not easy to make a unified AI system so my goal was merely to provide the parts needed for AI that could be used in various game types and still allow the developer to build the AI by adding code directly to the system using C++ or by using scripting languages such as AngelScript or Lua. The AI system works like this: Retrieve inputs from the game engine - Entity health and location information Process the current AI states Send simple tasks to the game engine for each AI agent The tasks that the AI system sends to the game engine should be very easy to complete. For example, if the AI system sends a "goto" command, the engine should be able to move to that location without worrying about obstacles. To navigate around obstacles, the AI system will send a series of "goto" commands marking points along the path. Next Steps: Currently everything is hard coded, but I want to provide a C++ interface so the AI programmer will be able to code custom behaviors. Then I want to expand that to include use a scripting language. After that, I'll start working on the navigation system. I'll continue to post information on my blog. For more videos, you can check out my YouTube channel. You can also visit ai.squaredprogramming.com. http://ai.squaredprogramming.com/2014/04/ai-system-progress-with-video.html
  5. I've been making a lot of progress these days. I've just finished most of a major renovation (hopefully the last until release) of the graphics engine. Before I had limited each model to one set of textures (diffuse, normal, effects map), but by artist request, I've added the ability to use a second set for added customizability(not a real word, but should be). I've also added the ability to change the colors of models in the engine. This will allow characters to be able to choose there colors. This isn't new earth-shattering technology, but it's a big deal for me. I'll be moving back to the US tomorrow. Hopefully I'll be able to force my way back into the job market. I guess if things don't work out, I can always move back to Korea, but I'm going to try my hardest at becoming a successful indie developer.
  6. Don't worry. Mistakes like this are quite common. That's why I tend to look to see if I've made silly mistakes first when debugging. I hate it when I end up making major changes when the original bug just turns out to be a missing minus or something. Glad you found the answer.
  7. Developing the AI Middleware's Interface As I explained in my last post, I've developed a text-based sample game that I'll use to build the initial version of the AI system. Then I'll get it to work on my 2D engine, and then finally on my 3D engine for Auxnet:Battlegrounds. I'm at the stage now where I need to develop the AI systems public interface. The AI system is still very early in its development so things will probably change, but this is how I invision using the code in a real application. [code=js:0]// StartupRootAI::Engine *ai_engine = RootAI::CreateAIEngine();RootAI::WorldDesc worlddesc;...RootAI::World *world = ai_engine->CreateWorld(worlddesc);RootAI::AgentDesc aidesc;...RootAI::Agent *agent = world->CreateAgent(aidesc);...// Shutdownworld->DestroyAgent(agent);ai_engine->DestroyWorld(world);RootAI::DestroyEngine(ai_engine); I haven't decided if I want to force the developer to have to explicitly destroy the agents and the world or allow just destroying the engine and have that take care of cleaning up everything. My current thoughts are to let the engine take care of cleaning things up and returning a message if there are any AI objects that weren't properly destroyed before the engine. Here's the preliminary code for the AI agents and their tasks. The task should be basic enough so that the AI system can tell the game engine what in a way that will be easy to implement. [code=:0]struct AIAgentDesc{ // the initial position and orientation of the entity Pose initial_pose; // set to true if the agent can move on more than one // axis at a time bool diagonal_movement;};enum AITaskType{ TaskIdle, // The AI should wait in an idle state TaskGoto, // The AI should go to a point (path will be unblocked) TaskAttack, // The an attack TaskTurnTo // turn to face a direction};struct AITask{ AITaskType type; union { struct { int animation_num; } IdleTaskOptions; struct { Vector location; } GotoTaskOptions; struct { int attack_number; Vector direction; } AttackTaskOptions; struct { Vector direction; } TurnToTaskOptions; };};class Agent{ public: virtual ~Agent() {} virtual void SetAgentPose(Pose pose) = 0; virtual void GetCurrentAITask(AITask &out) const = 0; virtual void SetTaskDone() = 0;}; The task currently just use unions. The reason why I decided to do it this way instead of using inheritance was I want to be able to easily copy data back and forth between the AI system and the game engine without creating new objects task objects and I can process the task without casting. Another design choice that I've made is completely separating the public interface from the implementation. That's why the agent class is an abstract base class. The same will be true of the world and engine classes. Let me know if you have any questions or suggestions. AI video for beginners and young programmers Squared Game Engine Modular Architecture Fun Indie Games In Development YouTube Playlist http://ai.squaredprogramming.com/2014/03/developing-ai-middlewares-interface.html
  8. [color=rgb(0,0,0)][font='Times New Roman'][size=1]AI - Progress[/font][/color] [color=rgb(0,0,0)][font='Times New Roman']Things have been going well on the AI front. I'm still hoping to have a strong enough foundation in a few weeks to be able to put my source code up on GitHub. It'll still be very early in the process, but I think I should have more than just a skeleton before I allow others to see the code.[/font][/color] [color=rgb(0,0,0)][font='Times New Roman']I've been looking at various middleware SDKs, namely RakNet, NVidia PhysX, and AngelScript, just to get a feel of what makes a good SDK. I've decided for now to go the RakNet and AngelScript route and have all of my samples be console applications and not graphics applications. I still will make a 2D version of the sample, but it won't be an official part of the Root AI SDK.[/font][/color] [color=rgb(0,0,0)][font='Times New Roman']Here's a screenshot of the console based example game. The AI system isn't being used yet so the AI bot just uses simple code to move left. Soon it will still just move left, but it'll be the AI engine telling it to do so.[/font][/color] [color=rgb(0,0,0)][font='Times New Roman'][size=1][/font][/color] [color=rgb(0,0,0)][font='Times New Roman'][size=1]Auxnet: Battlegrounds - Update[/font][/color] [color=rgb(0,0,0)][font='Times New Roman']As for the game Auxnet: Battlegrounds, I just received the base animations from our 3D modeller so now I have the needed test data to start working on enhancing the animation system. I want to get a video of the new animation up soon.[/font][/color] [color=rgb(0,0,0)][font='Times New Roman']articles.squaredprogramming.com[/font][/color] [color=rgb(0,0,0)][font='Times New Roman']ai.squaredprogramming.com[/font][/color]
  9. Thanks. I'm glad it was useful.
  10. If you still can't find the problem, put a break point in the code that fires the projectile and step through the code one line at a time keeping the variables in a watch window. I agree that it's either bad pointer management or you put an assignment somewhere and didn't notice.
  11. I'm curious about whether or not you were able to solve the problem. Non-fully answered forum post can bring such misery.    
  12. I'm on my phone and can't see all of your code, but from looking at the video, I wonder if it's your collision code. Maybe you put "=" instead of "==".
  13. Thanks for the suggestions. I'll keep this points in mind. I'm developing this system mainly for my game Auxnet, which is a multiplayer 3D game, but I also have a simpler 2D engine that I'll use for prototyping and testing features. Auxnet will drive the project though. I agree with what you said about scripting languages and multithreading. Not just for scripting and multithreading, but for other things as well, I've decided to let the AI system keep a copy of all of the agents' basic information and the AI system will make decisions off of its copies. The game engine will need to regularly inform the AI engine of the position and orientation of the entities. I also want to add an event system for handling things that you mentioned like sounds. I'll copy your comments to my notes file and I'll probably add it as a post to my AI blog. Thanks
  14. I checked out your kickstarter video and it is quite good. It's very high quality and looks very professional. I think others should check it out as well.