Jump to content
  • Advertisement

Squared'D

Member
  • Content Count

    78
  • Joined

  • Last visited

Community Reputation

2428 Excellent

1 Follower

About Squared'D

  • Rank
    Member

Personal Information

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Squared'D

    What's up with Me and the Micro 3D

    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. Squared'D

    AI System Progress with Video

    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. Squared'D

    AI System Progress with Video

    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. Squared'D

    Auxnet: Battlegrounds Progress

    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. 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
  7. [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]
  8. Squared'D

    Starting to work on AI now

    Thanks. I'm glad it was useful.
  9. Squared'D

    Building My AI Engine

    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
  10. Squared'D

    Algo-Bot: lessons learned from our kickstarter failure

    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.
  11. Squared'D

    Building My AI Engine

    [font=Arial]These days, I've been turning my attention towards AI. In the past, I spent so much time working on graphics components of the engine in the past, that I've never put the effort into building a good AI system. When I was developing Genesis SEED, I wrote a complex AI system, but it was too unwieldy and complicated so I decided to start from scratch when working on the AI system that would go into Auxnet. It's still in its beginning stages but in the long term, I'd like to release the AI system as an open source project. I want to build a general AI framework that will work on many different game types.[/font] [font=Arial]How and why do I want to make a general AI framework? I want to build this game engine in a modular way to allow for future expansion. To achieve this modular approach, the code will naturally take a framework with attached plug-ins design. I know that AI is very game specific, but what I want to do is provide a collection of techniques that the AI agents can have to complete their task. After that, the main architectural design issues will come down to how to separation of responsibilities between the AI engine and the game engine. I'm not an AI expert, but I have experience in designing architectures and feel that I'll be able to put together a good system.[/font] [font=Arial]The AI system will have three main parts, the engine, worlds, and agents. The engine holds the worlds and is responsible for initialization and the destruction the system. Multithreading support will also be handled in the engine. Worlds contain agents and also the navigation system and world geometry. Keeping separate worlds will an application to use one AI engine to process the AI for agents in unrelated and unconnected areas. Agents are the actual AI entities and are connected to an entity in the game engine. There is no direct link between game engine entities and AI system agents in code so the agents will need to store copies of some of the the game engine entity's data such as position and health information. I've given a very simple UML diagram below with some of my current thoughts. This will grow by leaps and bounds by the time end of the project.[/font] [font=Arial][/font] [font=Arial]I want to model my AI system like other middleware SDKs. I've used many different kinds of middleware including, graphics APIs, physics SDKs, networking engines, and scripting languages. Of all of the different middleware libraries that I've used, which system is most like the AI engine that I want to build? Believe it or not, this system will be most similar to a physics engine. Think about it, in a physics engine, first, you should set up the world or scene, then add actors and physics bodies. After that you run the simulation, checking to see the new position and orientation of your actors and then updating them in the engine. An AI engine in many ways is quite similar. First you have to setup the world and tell the AI engine how the level is laid out and what potential colliders and dangers are in the world. Then you should create AI agents that are connected to game entities to populate the world. The AI engine will run the simulation, and then the entities in the game engine should check their AI components to see what state changes have been made. That's the entire system in a nutshell.[/font] [font=Arial][/font] [font=Arial]For this to work, I'll need a very simple interface. The AI engine will be responsible for all decisions. It will tell the game entity to do simple task like move forward, turn, or shoot, and then game engine should do task and tell that AI engine when it has completed the task. The task that the AI engine will relay to the game engine should be simple enough to not need any complex intermediary AI. For example, if the AI engine returns a "go to" command, the entity should be able to go to that point by walking in a straight line and without worrying about path finding. For complex paths, the AI engine should give a series of "go to" commands until that agent has reached its destination. In this way, the AI engine will be the brains and the game engine will act like the nervous system and make the agent's body move. So the game engine to receive instructions from the AI engine, and for the AI engine to receive position information and whether or not the instruction has been completed. This information will not need to be sent back and forth every frame, but either as needed or at set regular intervals as decided by the developer. Game engines that used a component-based entity system can add an AI component to process instructions from the AI engine and to pass on the entity's location information to the AI engine. The game engine should also be able to send events to the AI engine that are not directly tied to a specific entity such as level events, so the AI agents will be able to respond to those events as well.[/font] [font=Arial]There's no way I'll be able to program all types of AI algorithms so the AI engine will need to not only be flexible but expandable. I'll have to build it so it can take add-ons written in either C++ or in scripting languages such as AngelScript and Lua. The add-on system should not be limited to giving support for different types of levels and path finding. There should be a way to make add-ons that will affect how decisions are made so there should be add-ons for using Ad-hoc rules, finite state machines, behavior trees, neural networks, and so on. Once a large library of add-ons has been created, building complex AIs will be a matter of choosing the proper base AI architecture (Ad-hoc rules, finite state machines, etc), adding skills, and performing some game specific tweaking. These are my AI goals.[/font] [font=Arial]To help me build all of this, I've created a small 2D game with a little robot that should navigate through a simple maze. I'll develop this demo more and more and post updates on my blog and on YouTube.[/font] [font=Arial][/font] [font=Arial]This has been reposted from [/font]http://journal.squaredprogramming.com/2014/03/building-ai-engine.html
  12. Squared'D

    Algo-Bot: lessons learned from our kickstarter failure

    The most insightful part of this article is your information on the rewards. Makes me wonder why even promise potentially expensive rewards like stickers and posters when all the backers really want is a copy and to participate in development? Very nice information. BTW, is your kickstarter video still on the internet? Can I view it somewhere?
  13. Squared'D

    Algo-Bot: lessons learned from our kickstarter failure

    I'm sorry your kickstarter failed, but thanks for this nice information. It'll help if I ever decide to go the kick starter route. I agree with you that it's important to build a community first. Advertising is important for indies.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!