• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

177 Neutral

About Exoaria

  • Rank
  1. Unity

    This reply was very constructive. This scripting language is more than powerful enough to test for an ID (or any variable) of a an NPC and can have virtually limitless scripts to reference from, or call functions from. Are you saying that I should create a separate script (such as a singleton) that will always be running, or listening, and for the NPC script to pass its parameters to a function on the external script signaling it the details it needs to make things happen? I guess my question is, how could I use that external script to manage 100 different behaviours for 100 different NPC's when they all have very different conditions? Or am I missing the point?
  2. Game Engine: Godot Game Engine Language: GDScript — Syntax very similar to Python My questions are obviously within these bounds. I am very happy with Godot as an engine; and I do not think that my limitation to GDScript prevents me from any of what I aim to achieve: many have done so before me. It is almost entirely a matter of logic and the implementation of that logic within the bounds of resources available. With that said, let me propose my problem.   I am by no means an adept and fluent programmer, but my knowledge has been sufficient enough to make games in the past and I feel that I am capable of implementing whatever structures, systems and logic trees are suggested to me with some thought and exercise.   I have created a dialog system in Godot Game Engine which I am (somewhat) happy with, but does not achieve my core goal. Keep in mind this system was completely created by me and I was not following any examples, which could contribute to why it is so awful.   The first thing to note is that this system only allows any sign or enemy to have two states of text: An intro, and if specified, a continuation of that text. An exported variable lets me check a boolean to say "This character has two lines of dialog." — Upon speaking to the character they might say "Hello [player], my name is [entity], nice to meet you!" Then be flagged to say that the character has spoken to them. Upon "activating" them the second time, the script will see that it HAS a second line of text, and then the NPC might say "It's a nice day today!"   The main core of this is done through three systems: - Checking if the player is next to an interactive object. - Passing the character details to a function which will query an external config file for appropriate dialog. - Displaying the text on screen. (This part is fine, I'm totally happy with how it turned out)   Let's say that I have a Skeleton that the player can talk to. Its external parameters are this: SECTION: GRAVEYARD (Its location) KEY: SKELETON (Its identifier) EXTENDED: True (Does this NPC have two lines of text?) The script would then query a .cfg file which contains a dictionary of text; it would look like the following. [GRAVEYARD] SKELETON = {"INTRO": " Why don't skeletons fight each other?.","IDLE": "BECAUSE THEY DON'T HAVE THE GUTS!."}   The first time the player talks to him, the script would see that it has two lines of text. It would automatically search for "SKELETON" in "GRAVEYARD" in the config file. (See above.) The script would then retrieve the dictionary value held in "INTRO" and flag the NPC such that the next time the script is called it searches for the "IDLE" dictionary value. The player then activates it again, the script sees the flag, and then looks for "IDLE" instead of "INTRO". This is the best that I could do. And it's god awful. It serves no purpose, other than to display two different mundane pieces of text.  So why don't I use the system to enable more? This is where my logic runs out. Bam. None. The way that Godot (and MANY other engines, including Unity) handle objects are through nodes. These are the equivalent to Unity prefabs. I create an object and I have the luxury of attaching a script to it, which defines the way that ALL of those objects will behave, which saves me a lot of coding. Obviously there is a ridiculously easy solution to this, but my experience doesn't allow me to think of one, which is why I am here. If the script searches for an invalid dictionary, the whole game crashes. If it searched for "IDEL" instead of "IDLE" — it's game over. (No pun intended.) So a solution would be to create a different script for each NPC in the entire game, but this doesn't work. What I need is a dialog tree which can be safely called by all NPC's in the game to get different text based on the situation. Is the player low on health? The NPC could say "You look sick!", is the player on a quest? The NPC could say "I hope you've killed those pesky Goblins!", has the player just saved someone's life? They could say "Wow, thanks for saving me!" I will probably never use such complicated trees, and my current system could pass for this game as it's only a Castlevania-esque platformer. But it does me no favours, and while it has taught me a lot, is a huge bottleneck not only for creating dialog, but for my event system (flipping switches, opening doors with keys etc.) which works very similar to the above. I have researched dialog trees, but they're all in the context of LUA/C++ which I obviously can't use. I'm pretty sure Godot supports XML but I don't think it can read XML files in the usual way — in that XML is specifically just a format for saving scripts or prefabs. I have a Config File system which can store any kind of variable or dictionary, and a surprisingly powerful scripting language that can do just about anything that Python can do. I guess the best way to describe my limitation from my point of view is that I don't know how to create a system where entities or interactive objects behave differently while still using the same script. Obviously, there are other factors, and dozens of ways around it, but I really really really need a push in the right direction. Please give me some logic advice, or ways that you tackled similar issues. Thank you so much for taking the time to read this.
  3. Thanks for all the input and contribution to my problem guys! The problem ended up being that none of the builds were compatible with my compiler. I needed to download a Nightly Build. I simply replaced the contents of the Nightly SFML with the ones in the current directory, rebuilt my C++ file and everything is working now. My circle is on screen and I'm ready to sell it to Microsoft for a mere $120,000,000 and the rights to Halo.
  4. Alright, thanks BitMaster. I get where I was going wrong now, I didn't understand that those errors were telling me I was using a version of SFML for my wrong compiler. After downloading the MinGW version I am faced with a new dilemma. I've linked them all correctly, however:   I don't even know. Honestly I should be able to understand this but, c'mon, I just want to display a blue circle. My computer hates me.   I'm sure that I've put everything in its right space though.   EDIT: Okay, I rebuilt it and now I'm not getting the error above anymore. But now I'm getting the errors seen in the original post again! Except this time I've linked up the .a files and everything seems to be set using the MinGW version.   EDIT 2: Here's everything as it should be, and you can see the errors down below.
  5. I assume you found it 'funny' to modify this error. Because if not, whatever is missing has nothing to do with SFML. Never modify error messages. Always post them verbatim. For the actual problem, either download the correct distribution of SFML for your compiler or build it yourself. As a side node, this problem has nothing to do with graphics programming. It's purely a basic library issue.   I think that for anyone after spending days upon days sitting in front of a screen trying to understand the headache of C++ and OpenGL you will do absolutely anything to try and lighten the load. However in case I needed to reiterate, I got about 50 error messages upon trying to compile them, all starting with `_imp___ and then followed by lots of gibberish with random words inserted into them. If you'd like to see them all in their non-hilarious format, that's super. Here they are.     Personally I prefer the communist child support alterations. Anyway, I had no idea this was not related to Graphics Programming. I have not had this issue at all until I tried to use Code::Blocks with SFML. I just want to know where the .a files are, then I'll leave you alone and go buy some kittens. (SFML 2.0 is perfectly compatible with Code::Blocks and the GNU GCC Compiler)
  6. I am trying to use Code::Blocks to write up my supernoob first 2D graphics of a deformed excuse for a shape on my screen. All seemed to be well and good, I added the SFML-2.0\include\ folder and followed the documentation for my incredible green circle, my IDE was smiling brightly upon me as I it recognized the RenderWindow term and allowed me to place in parameters without proceeding to mock me by filling my log up with red text and references to objects that I never even wrote. Upon excitedly hitting the F9 key to build and run my new AAA game that was going to make me millions of dollars and revolutionize the market, I was finally spammed with the sadistic shit that the IDE was taking pleasure in letting out on me with an error message on almost every line. It's relatively the same error each time:   Anyway. Some Google searches suggested that I hadn't placed in the appropriate library files (I had linked to the .lib's beforehand) and so I went on to fix my problem based on my own incompetence when... there's no ".a files" at all. It clearly suggests that they are in the lib folder. But there are only the basic libraries (system, system-s, system-d, window-s etc.) in .lib format. If I can't even figure this one out I might as well seek a new career line as a catholic priest. So someone please tell me what the heck I'm doing wrong before I repent to the good lord for all my wrongs and move to Russia where I can spank mutant deer with my new acquired religious friends. You guys are about to determine my future.
  7.   Yeah, totally agree. I think the OP has two main problems right now:   1. The OP may be focusing on C++. 2. The OP may have tutorial-itis.   On 1., don't start with C++. Try C#, Java, or Python or just about anything else besides Perl or C or C++. On 2., don't read tutorials. There are some good ones but most of them suck and at this point you won't be able to tell the difference.   Damnit, I just spent 3 days watching a 72-video series on C++. I feel like I have a handle on it but I'm not sure where to go next. I was recommended to use SFML to start making some really basic games but I'm already lost. It's like I learned the C++ syntax and now I'm in an entirely different world.   I read everyone's posts and I can't reply to them all, but I think I get the whole concept of stacks and binary a lot better now such that each variable takes up a certain amount of space and is allocated a memory address (hence why you can use pointers to cout << the address directly and see them) and it's helped a lot. I guess my real problem now is picking either SFML or OpenGL and running with it whilst reading C++ books on the side. I don't really want to learn about graphics though, I want to learn how to manipulate graphics but with the least amount of "learning to make Disney movies" side of it as possible. I am almost exclusively learning C++ for games. I've tried C# and Java but I find them much harder and less enjoyable than C++. I know that everyone wants to become teh n3xt besterest AAA c++ pr0gramma in teh w0rld!11! and usually give up after a week but I'm generally interested in sticking with C++ and maybe using Lua to handle some of the load. Permanently. I've been coping so far, it's just come to a bit of a point where I'm unable to figure out what to do next. I've learnt the syntax, I can do basic code and understand it relatively easy, and the rules are etched into my head. I just need the next step to making my really terrible 2D rip off of Pong in terms of manipulating screen graphics with an API through C++.
  8. I find that this community has a reliable sense of direction and that's also something I can appreciate when I'm finding myself lost every five minutes. Anyway. So I went to watch TheNewBoston's tutorials on C++. I have now watched all 73 tutorials and I've completed all the tasks given. Keeping in mind that I originally wasn't going to learn the language on its own but through gaming tutorials in development with C++, I've now decided that it's best for me to learn the language itself. Obviously I'm no expert, but I've learned a decent amount and I've grasped the whole idea behind OOP finally. tl;dr I'm able to understand and code in C++ syntax now and see where I go wrong.   I want to know now what the next step is. Some people are telling me to head on with OpenGL (or SFML) and others are telling me to just use UDK. I don't want to use an engine because I want to spend the next few years building my knowledge up from the ground.   Should I learn SFML and how to use it with C++ or move onto finding a tutorial series that shows game development with SFML at the same time? Does anyone have links or references to places I could find these? Anyway, just any kind of directive advice I will appreciate a lot. Again, I really don't want to learn Unity or UDK. I'm happy to make terrible games coding them myself until I get better. Thanks.
  9. Thank you to everyone, over the past 24 hours (when it hasn't been someone telling me I'm asking the 'wrong' questions) I have gained so much understanding. I spent a good hour reading everything Norman Barrows had to say and then did a lot of research on it, all this time I've had no idea that a method and a function were the same thing, except methods are more used in Java and C++ is based on functions, they work the same way with differences based around whether they are related to an object or not. I am appreciative of all the examples given and I'm referring to this thread a lot, which has helped me learn more.
  10. Yes, yes we can I'm glad you asked this question... this is exactly what I needed when I started out, but never got a straight answer. So here's the secret: The screen is an array of pixels, and each pixel is a number. Say you're in 640x480 resolution, 32 bit color depth. Then just do like unsigned long screen[640*480]; And each element of the array is a pixel, where the low 8 bits of the value are red, next 8 bits are green, next 8 bits are blue, and upper 8 bits are unused. So you can do like, screen[5 + 10*640] = (100) | (200 << 8) | (250 << 16); To set the pixel at location (5, 10) to a nice shade of sky blue. The next big thing is to get your array of pixels to display on the physical screen. When programming on PC, in an operating system, you have to go through an API of some sort. SDL is my favorite, because it takes very little code to set up, and once you do you can just copy your array over directly, and then call SDL_Flip to display it on the screen. Then for a game, it all comes down to the master frame update loop. In other words, while(1) { UpdateFrame(); } You'll usually have to add a check to break out of the infinite loop if the player presses the close button on the window, but that's the gist of it.   Inside UpdateFrame, you check for input from the keyboard/mouse/controller, update positions of characters, copy images of the background and characters to your screen array (i.e. rendering), and then copy that to the SDL_Surface that is linked to the physical screen.   Input is another topic, but the bottom line is that SDL makes it possible to keep track of what keys are currently held down, as opposed to cin/cout type stuff where the program has to stop and wait for user input before continuing. So in the game update you just check if the right arrow is pressed, and if so, move the player character to the right (add to his x position)   It's easiest for me if I run at a fixed frame rate, like 30fps. If the computer is fast enough that it could update and render frames faster than that, then you just sit and wait for time to pass (for example, using the Windows function GetTickCount() to keep track of how much actual time is passing). That way, if you add 1 to the player's position each frame, he'll move a total of 30 pixels to the right every second. You can do variable frame rate, where you run as fast as the CPU can keep up with, but there's not much advantage in it for the extra complexity added, IMO.   Does that help?   Yes, this helped a lot as well. I got a bit confused at the bit where you were talking about 8 bits being red, 8 bits being green, 8 bits being blue and then 8 unused bits. To be honest, I don't even know what a bit is in this kind of scenario. I got everything else you said but that seems a little difficult, doesn't it? Taking Super Mario Bros. for example on the NES, surely Nintendo wouldn't have programmed each pixel of Mario to move in different fashions. Wouldn't they have designed his sprite somehow, programmed the sprite to display and then move with a specific animation? I found this page to be quite interesting under those terms.
  11. I'm hearing a lot of fancy words the more I grow interested in programming. I don't really understand a lot of it. I wish programming tutorials would give more information about what they're talking about. Let's use C++ for example. I know that setting a function to void means that it doesn't return a value. Returning 0 simply means that the program ran correctly. No programming tutorial has told me more than this. They have only ever elaborated on those facts. When I ask myself "In what situations should I set a function to void?" or "If I return 0 in another function, what would happen? Why would it cause an error?" I don't know how to answer them.   These might seem like insignificant details to you, because I could go on without them. But I want to know exactly when I should be using void, and when I should be returning a variable.   Object Oriented Programming is said to take data and code and put them into an object. They say this differs from traditional programming methods but I have no idea what traditional methods were and how different they were. I don't know the difference between my "code" and the "data". Can anyone please relate to me and see why I'm struggling? It's almost like nobody bothers to sit down and take the time to explain why these things are so. Every tutorial I watch, book I read does not elaborate enough and it drives me up the wall. But enough complaining.   Can anyone give me some basic run through of the most basic principles of coding. I understand what integers are, floats, strings, booleans - for example. I know that it's more effective to use a single instead of a double when you're working with a smaller number, but why? I just need some explanations on common misconceptions and reasoning behind the crap I'm typing. I see it coming together, I see it working, but I don't know why it's working and I struggle to replicate it later because I don't know the reasons why I put certain things in places the first time.   If typing something up here is too much to ask for, that's probably right, lol. I'll appreciate any information or tutorials, videos etc. that anyone can link me to in terms of coding and their core foundations and reasoning behind its basic principles. Just the silly things that nobody bothers to elaborate on as I explained above.
  12.   Thank you for this reply. It was encouraging, gave me a place to start and did not make me feel overwhelmed. It was very constructive in a sense that it made me feel as if I am at the right starting point and I can make a basic clone of Pong over time in order to steadily increase my knowledge. I understand there are lots of people that have never been introduced to programming before and are immediately convinced that they are able to create the next big World of Warcraft killer, and I refuse to not be realistic about this. It will probably take me ten or more years before I make a complete platformer that is fluent in what it does - maybe more.   Any advice you can give me would be invaluable. I'm checking out those Graphics API's and bookmarking them so that once I've read through a decent amount of C++ tutorials and understand how to write basic programs, I'll move onto them and progress from there. Again, thanks so much for taking the time out to give me a pointer in the right direction and encouraging words.   To everyone else, thanks for your input. I understand now that there is a Graphics API that's needed to allow the code to communicate with the card. Can I ask, though, why has nobody mentioned Direct X? To my knowledge, that's a very big one, unless I've missed something.
  13. I'm hearing a lot of the same thing when it comes to this topic and it seems most people are pretty confident and in the same mind. So I can't help but think I must be missing something pretty crucial if I can't seem to rationalize the very concept that an entire community keeps talking about. I suppose this confusion comes from one primary basis, which is, how do you translate code into an interactive environment? So I keep hearing, that people design models in Blender or draw them for use with animation, then they'd download some shaders and use Dynamic Link Libraries with all that support to examine and configure the input/output. I've heard it all. What I don't understand is that there is a huge gray area in between where I am at now, and how any of that works. Truth be told, I could go and purchase Unity3D right now if I wanted to. Heck, UDK engine is free as long as 25% of revenue is handed back to Epic. I'm sure I could thrive off of that crap if I had the determination but I want to start from the basics and the reason I am doing this is because I want to understand the basics. I want to know how I got there. Not download an engine and have the fish handed to me, I want to learn how to catch the fish myself. Get it?   Here's my problem, then. I've decided to use C++ (no, duh?) and I'm finding it to be typical in terms of Object Oriented Programming. That's great. I've learned all the basic concepts and I intend to keep learning before I even attempt to make my crappy spin off of Pong - but before we even go there, I want to get some answers on where you'd have to take the language to get that kind of interaction up on screen.   So far I've been learning about if statements, arrays, classes, variables, operators - all the noob jazz. If I want to get something up in console I'd just type cout << "Hello world!" << endl; in one of the statements in my main function and then return 0. SUPER simple stuff, I know. What I'm having trouble understanding is how I can go from typing text into a console, and using this exact same language to render graphics onto a screen and have characters move around. Let's say that I wanted to remake the original NES Super Mario's first level (no way I'm doing this, but hypothetically) in C++. How do I draw up a graphic of Mario with a running animation, add in a background and put in my static objects, and then interact with them. It looks good on paper to make all these objects and classes but I don't know how the hell you'd get there. Can we really talk on the most basic level? Can someone explain this gray area to me? What steps does someone need to take to get from displaying text on a console to displaying interactive images such as Pong? To type "Game Over" would I still use the cout << "Game Over" << endl; statement or something completely different? Would I just call another class which tells it to position the text in the middle of the screen and in a white, ASCII font? I'm so confused and I can't even fathom how you'd get 3D graphics on screen with textures and enemy AI if I can't even grasp this concept. Really, as I said. I just need a basic explanation, dumbed down as much as possible to its core foundations of how a programming language such as C++ displays images on a screen that a user can interact with in full functional environments. Even if it's just something like Pong, or the original Mario, or Donkey Kong. Really, really basic stuff.  
  14. I've been thinking of getting into the game creation business for a while, seeing as playing them is my passion. I'd like to slowly build up on the concepts over the next few years and maybe one day create a game. Whilst those kinds of pipe dreams are probably decades away, I'd like to start by asking a few questions to you all about where the best point is to begin that progression. Specifically, I've used game engines like UDK and Unity before. I had the basics down, got player movement happening and created terrain with shaders and effects. Anything above that felt very overwhelming, so I'd like to code everything from scratch such that nothing is beyond what I already know.   I've decided that the best programming language I could begin this kind of work in would be C++ (please correct me if you have a different opinion) however I'm not sure whether I should think about actually programming an engine over time for me to create games in. At this stage I'm only interested in making classic platformers such as Banjo Kazooie or Donkey Kong 64 (with Direct X 11, of course) but I just cannot stand working with a tool that another company has created. I feel as if as an indie developer the best thing I can do for myself is to make everything myself, as opposed to someone else doing it.   Lets say that over the next few years alongside my studies I work on a 2D platformer or a 3D side scroller. As a community, would you suggest that I make a game engine myself with the various internet resources at hand or program the game in a language by itself without creating myself a tool to do that work for me? Please also note that I understand the concepts of basic programming but I've never actually made anything before. That's why I'm trying to be so realistic in this topic, because frankly no matter how much I want to make a game, it's probably not going to happen for a very long time.  
  15. Unless you're looking to go down the path of Minecraft I wouldn't consider any of those routes an effective one for something you're taking seriously. If you really had that kind of juice behind you (placeholders, artist hire) then I wouldn't assume it would be going into the game ideas section in the first place. But if you're convinced that this would be some kind of solution then it sounds like you've already got your answer and the most rational conclusion. There aren't many other paths you can take without $$$.