Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

548 Good

About Grafalgar

  • Rank
  1. Grafalgar

    OtterUI - Open Source UI Library

    Yup - it's included in the repository, as part of the "SampleApp" project.  It demos not just the different controls, but also what a basic integration would look like.  Also, there's a plugin architecture in place that lets you define and build your controls, as well as the ability to animate them.
  2. Hi folks,   I'm the creator of OtterUI.  Thanks for pointing out the old-ass Word doc file - that's a remnant from a time gone by ;)   I've cleaned things up a tad more.  Let me know if you run into anything else.  And, of course, feel free to reach out if you have any questions.   Also, l0cal05t is correct - OtterUI does not provide its own built-in renderer.  I provide a rudimentary one just as a starting point, but after that it's up to you integrate it into your pipeline.  That's done on purpose - I got tired of UI libraries competing against my renderers for whatever reason.  Same goes for File IO, audio, and so on.   -Graf
  3. Debug builds automatically initialize (or zero out) your variables for you, while Release builds retain whatever garbage value is presently set at that location in memory your variables refer to.   Whenever you create a new map entity object, set flags = 0 in the constructor.  That should do it.
  4. Hi folks,   Some may remember me from a few years back, but I put together a UI library & tool specifically aimed at game developers.  It's purpose was (and still is) to be cross-platform and engine-agnostic, by being developed in as vanilla C/C++ as possible, while offloading the engine-specifics to the developer.  All the actual rendering, sound, etc is handled by the developer - OtterUI just tells you what to render and when.  Same goes for file I/O, audio, and so on.   To show you what OtterUI can do, check out Skullgirls ( its entire interface was built using the library & tool.   Fast forward a few years - after trying to build a company out of it, and not going very far, I've decided to make it Open Source and let the community benefit overall.  OtterUI source & latest distributables can be found on github at:, and is distributed under the MIT License.   Let me know if anyone has any questions, otherwise, enjoy.   Graf
  5. Grafalgar

    Is C++ too complex?

    OK, that's fair, but the point is that the stuff I deal with regularly with regards to C++ I, personally, do not find very hard nor complex. Instead of 1st year students, let's expand to what one might learn throughout your 4-year degree. Or maybe in your first year being a software engineer. A lot of things that are considered "too complex" I very rarely encounter, and that's clear across 14 years of dedicated C++ development. Moreover, what I'm particularly interested in is what makes C++ more complex than Java (or C#), at the beginner/novice level, without going into language obscurities that most people may not deal with.
  6. Grafalgar

    Is C++ too complex?

    Ok, reading through the comments, and the general "it's too complex, not a walk in the park, long time for something shiny on the screen, etc" hand-wavy consensus - I'm really curious: What, specifically, from the folks that consider the language overly complex, are the overly complex pieces of the language? And I'm not talking about relatively obscure tricks/"abuses" of the languages. I'm talking about stuff you'll learn in your first years of Comp Sci, or an intro-to-C++ book. I mean, I've seen my fair share of heinous code. In all manner of languages: C, C++, Java, C#, Python, LUA .. you name it. But what makes it complex has never been the language as much as the complexity of the code. In other words, I rarely ask myself: "Damn, what does this language feature do?" but rather ask "why in the world has the developer done this?" I do believe, though, that pointers and the usage thereof continually trip folks up with regard to C *and* C++, and with good reason. Pointer management takes a while to get a good grasp of, but even Pascal had pointers and I can count on my left foot the number of times someone has said "Pascal is too complex" Even though Java and C# have *many* more language features than C and C++ combined, the fact that they (mostly) completely hide pointers and memory management makes it easier for most programmers to write code and not worry about memory consequences, right off the bat. So, again, what *exactly* makes C++ so complex over, say, Java? Pointers aside, and considering only what you may learn in your first year as a CS student? (I make that distinction because as you spend more time in any language you'll eventually learn all sorts of 'interesting' things that'll make most folks' heads spin)
  7. Hi all, A friend's daughter wants to make her own iOS game, and has storyboarded the entire thing already. It's a pretty simple 2D game, not much going on besides some interaction with potions and stuff, and now she'd like to put it together and publish on the iOS appstore. I'm trying to help her find a good game dev tool geared toward kids or *very* early beginners. DarkBASIC, GameMaker, GameSalad come to mind, but I'm thinking it might still be a little "heavy" for a 7yo. Any suggestions? -Graf
  8. Grafalgar

    Is C++ too complex?

    For what its worth, compared to more recent languages, C++ does not strike me as overly complex right out of the box. C# and Java come with many more language features right out of the box, and the accompanying SDKs for both completely eclipse with what is considered "standard" for C++. Compare the SDK for Java against the STL for C++. What makes C++ complex is what developers end up doing with it. What makes C++ tricky is memory and pointer management, which (imho) is the main reason most folks are hesitant to get well versed in the language. Exceptions? Meh. Classes? Meh. Templates? Meh. Pretty straightforward stuff. To use an analogy - it's like saying a spoon is complex when you see someone using nothing but spoons to build a working zeppelin. Maybe that's a bit extreme, but yeah.
  9. Grafalgar

    GUI selection in OpenGL, C++

    Check out the UI library + Editor I put together - It's not quite as involved as CEGUI, but it'll (hopefully) get the job done for you pretty quickly. Also, if you don't want to worry about OpenGL / DirectX / etc rendering, there are sample renderers for you to get you going quickly.
  10. Hey folks, As some of you know, a while back I set out to create a UI system for games. Something that's simple, very cross-platform, and lets you create animated UIs. You know, things that'll slide in/out, fading, popping, all that good stuff. After a couple years worth of dev, and a few shipped games (yay!), I built OtterUI ( With all that said, since it's really just me building the whole thing out, I've developed a certain "blindness" the entire package. So what I might find useful others don't, or vice versa. So, I really need honest feedback Good, bad, ugly, you know the drill. Though, I'm really more interested the latter two Even if it's nitpicky or major overhaul-type things. So if you're so inclined, please grab the latest version of OtterUI from the site, play around with it, and please let me know your thoughts. Thank ya Graf PS: Mods, please let me know if this isn't the right place for this topic -- I wasn't 100% sure where to start it.
  11. Grafalgar

    GPA or Knowledge?

    Your GPA doesn't mean anything if you're applying for a job in a field that has nothing to do with your GPA Like having a 4.0 CS major apply for a job at a chem lab. Not gonna happen Well, highly unlikely at least. Point is, just rattling off an impressive GPA doesn't mean anything unless it's qualified with what the GPA was for. But, on a related note, I've seen plenty of folks fall on either side of the good / bad grades scale. Once saw a guy hired with a piss-poor GPA once (ie, 2.3-ish) -- phenomenal engineer. Had a 2.3 because he spent all of his time making games instead of doing schoolwork - paid off for him! Conversely, saw a different guy hired with a GPA in the same ballpark - terrible programmer. His GPA was because he wasn't quite bright and had a terrible attitude. At the end of the day GPA, schoolwork, side-projects, etc is all just extra stuff to use when evaluating the entire package. What matters most (imho) is how well you can work with others and with a particular team. That's why many companies look at people with the same-ish qualifications but then base their decisions on how well the person clicks with the team. This, also, is why many engineers have a hard time interviewing - they can smart as heck but if they lack the people skills they're going to have a hard time landing a good job. So .. while boosting your GPA make sure to play sports, engage in social clubs, etc. Get them people-skills up! Also ... .. this. That's the damn truth right there
  12. Grafalgar

    GUI and databindings

    You definitely don't want to update the elements every frame, whether or not the internal data actually was updated. As your UI grows larger (and larger (and larger))) you'll quickly find that you're spending too much time updating stuff that need not to be updated. Ideally you should only set your UI elements and their data when the data has changed. The tricky part is coming up with a nice way of doing that without polling the variable's before and after values and only acting when a change has been detected. There are two ways you go about doing this: * Implement some sort of event listener mechanism notifies all of its listeners based on your criteria. Ie, whenever an enemies dies, or your soldier count changes, or whatever. Various implementations exist, like functor lists, or C# events, or listener classes, and so on. * Implement a messaging system. Your game logic would send a message to all message handlers upon enemy death, soldier count change, or whatever. Message handlers would listen for and only process certain messages they care about. In either approach, you gain much more than just a way to update your UI controls with updated data: with a solid event / messaging system you can start messaging other components of your game without having to hack anything. So, for example, if you implement a messaging system that sends a message whenever the soldier count changes and the UI catches said message and updates a control .. well, then there's nothing stopping you from having your AI listen for the same message and changing its strategy.
  13. Grafalgar

    c++ not displaying through a loop?

    To add onto this, many times when you run your program in debug mode the default values for uninitialized variables will be 0, so it might seem everything is OK. It won't be until you run it in release that Really Weird Things(tm) start to happen. If you don't explicitly give a variable a value, it's a complete crapshoot as to what it's going to contain. You can either initialize the entire temp array to 0 through a for loop, or you can do it as your first instruction in the first for loop. This way you'd always set all of your elements to 0, and overriding only if the number is a multiple of 3 or 5
  14. Grafalgar

    iphone 2 android

    It depends on what the iOS game was written in. If it was Obj-C, yeah, you'll probably have to rewrite it. If it was predominantly C/C++ with minimal obj-c wrappers, then you'll off to a good start. Android is primarily Java, but Google has been beefing up the Android NDK (Native Development Kit) that'll allow you to port your game from one native platform to Android. I've done that twice now for a major US publisher, and yes, it's a pain in the ass But it can be done. The biggest kick is usually the UI, as The Troll mentioned. If the iOS game uses CocoaTouch you'll probably have to rewrite your entire UI to be a little more cross-platform. If it's a native UI, built into the game that you have source code for and all that, you'll probably be OK. Generally speaking, the less platform-specific tech a game uses the more portable it is. So you'd really have to judge for yourself on the game you want to port, and determine what effort would be involved. If you give us a bit more detail on the project, we may be able to give you some pointers. Ex, does it use CocoaTouch for UI? Is it all in Obj-C? How much iOS *specific* tech does it use (ex, GPS, address books, game center, etc)?
  15. Grafalgar

    lightweight GUI lib, portable

    Probably a little late to the game, but I've been putting together a highly portable, lightweight UI library and editor. It's all in C++, and lets you control the rendering / file-io / etc. So, if you switch engines, or rendering paradigms, or whatever you can easily integrate it into the new environment. The way it works is that the library simply hands you a set of polygons, and you're responsible for putting them on screen OpenGLES and D3D samples are provided to let you get up and running quickly. It also comes with a standalone editor that lets you lay out and animate your UI pretty easily Check it out at if you get a chance
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. 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!