BCullis

Member
  • Content count

    835
  • Joined

  • Last visited

Community Reputation

1955 Excellent

About BCullis

  • Rank
    Advanced Member

Personal Information

  • Interests
    |programmer|
  1. Prolific relative to the pace prior to the 13th (which was more like once every few weeks?) On the other hand, the up-tick in post frequency got me to come back and check things out, so...
  2. Has anyone else noticed that since the 13th of July, the gamedev.net facebook page has been posting new forum threads at an abundantly prolific rate?  I don't think it's quite to the level of "every new post becomes a link" but in attempting to scroll back to when they started, I could be convinced...
  3. External Level Editor?

    To your first question: if you're writing the export script for your level file format in python yourself, you can include any information you want from the scene, so I'd say it's certainly possible.  That would let you do all "level building" directly in Blender, and then hit your custom export button. Second: I'm pretty sure there are a large collection of cast-shadow tutorials for d3d11 out there, but to your question about using Blender the way you want, someone more savvy with lighting and pre-baking in Blender specifically could probably answer that part more comprehensively than I.  My experience with it is limited to modeling/animation.
  4. Save/Load High Scores

    You might want to look at implementing different game states to the overall game loop, so that you don't have to fit the logic for every possible state of the game into one monolithic Update() method.  That's not a brief topic though, (and I suggest doing some googling on "managing multiple game states" even here in the forums).     As a rough explanation, when your game is playing, some variable somewhere should know that the game is in  regular "play mode".  That's a state, and update should only do stuff that's pertinent for "play mode" updates.  Things like decrementing the timer and checking for "is time up yet", for example.   When the timer reaches zero, state should switch to "endgame mode", and then update calls should have a completely separate set of logic that makes more sense for the game during the post-play time period.  Things like "was the high score good enough to put on the board" and "did the player press 'restart' ", for example.     However, in the interest of a quick solution for now, it sounds like "I already have it in a separate function and I call it where the rest of my [end] game logic goes" should result in only calling the score-comparison once.  What does that code look like?
  5. Here's one solution someone used, seems several people have had success with it according to the comments.
  6. Save/Load High Scores

    Why can't it just run once?  It's something you only need to do once at the end of a game session.  Certainly no need for including it in every frame. I'd lean towards sticking it in a static utility function just for ease of editing later.  Then in whichever method handles "what happens when a game is over" you just call over to the score-checking method and shuffle around high score order if necessary. There's no "one best way" (arguably) to do it, but there are certainly easier-to-maintain ways.     First, just make it work.  Then, if you want and have the time/need, make it work better :)
  7. Not really, we probably SHOULD but the game gets pretty constantly playtested and we're establishing some more structured testing rules now (to include a dedicated "build machine" and a better bug tracking db).  One thing I've enjoyed about Unity is the constant prototyping environment.  You can open a new scene just to test a specific component, muck about all you want, then just throw it out when testing is done or never include it in the check-in so you have a handy sandbox ready for other change-testing. There are certainly unit test frameworks for C# ready to go, but there's so little lag time between writing a module and being able to test it in-game that we haven't really seen the need to get very test-oriented.
  8. I grabbed a random mob prefab from the current build (since I have it on my home machine right now), here's the component list:   Mesh Renderer Mesh Filter: [none] Tk 2d Sprite Tk 2d Sprite Animator (those four come bundled together, tk2d is a 3rd party sprite handling library we grabbed since the project started before native 2d support really took off) Audio Collection - our mobs own their sound collections World Object - base component inheriting GameObject that we use for most in-game world-contextual objects Character Module - component for anything that has sentience (self-movement and physics mostly) Sprite Module - Where we control worldObjects' sprite changes (new animation clips/states) Combat Module - component for any objects that can deal/take damage Ability Module - component handling our ability system: any kind of "action" a combatant can perform (things like "meleeAttack, fireball, laser, etc") AIControl Module - lets a tweakable FSM control this object's actions (player character has a playerInput module here instead)   And that's it. All of those components have custom editors (the AI FSM even has its own visual scripting tool we wrote custom) and aren't light on the actual backing code.
  9. Cryamore is using Unity for a 2D game, and once we built a fairly straightforward set of 2d-related utils for our specific game style (like using y-axis movement to push/pull things in z-order), it's been really smooth sailing getting things working with very little interference from the system.  The biggest hump to get over is using the tools like they're intended (going with the paradigm vs against it).  That was my particular struggle, the more I've learned the easier it's gotten to make things happen with little to no engine complaints.
  10. Save/Load High Scores

    Exactly.  The dat file had previously serialized out an older version of the struct that held a single integer instead of an array.  As the dat file was external to the program context, nothing updated its internal structure when you changed the code itself.  Deserialize was reading this old data type and choking when your explicit cast said "now populate this array field with this integer".
  11. Save/Load High Scores

    So it's choking on the deserialize line.  Try this: delete the .dat file and see if a newly created one plays nicer with the current code.
  12. Save/Load High Scores

    There should be more information in the Console tab/window, to include the full stack-trace of the error/output (when you select any entry in the Console list, i.e. one left click).  Each entry in the trace should tell you which file it was in for that step, and which line the function call for that step happens at.  Resize the console tab to see more (as the stacktrace content appears at the bottom of the window), or just highlight the whole mess and paste it into a notepad or something to read.
  13. So I know that in Photoshop and Sketchbook you can define custom brushes that let you define randomized rotation and spacing of the individual brush image.  Looks like you can do something similar according to this tutorial with Gimp.
  14. How are you creating the component fbx's?  (The head, torso, etc).  I'm guessing you rigged and animated the whole model, then broke it up into parts?
  15. Save/Load High Scores

    "An integer can't be converted to an array of integers" Which line is throwing that error?