• 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.

Varlun

Members
  • Content count

    6
  • Joined

  • Last visited

Community Reputation

113 Neutral

About Varlun

  • Rank
    Newbie
  1. [quote name='Bacterius' timestamp='1353811172' post='5003866'] [quote name='Varlun' timestamp='1353810713' post='5003864'] Hmm. Thanks again for the tips.. I do realize this is a pretty big undertaking, especially for my current level. But, I do feel like I -can- make what I'm trying to do work... it'd be extremely tedious, but I could make it work. And of course, as time goes on and I learn more code fundamentals, such as arrays, I'll use them. Could you believe that I had originally tried to make this game with nothing more than If statements? Then I learned sub procedures. But.. as for the way I'm trying to do it now.. do you have any tips for making it easier? Or perhaps a couple tips on how to code this in an easier way? Such as using sub procedures. You said something about good code not being just a crapload of If statements... so, what can I do instead? [/quote] Shadowisadog gave a good suggestion about data-driven design, storing all your data (maps, enemies, inventory items, food, etc...) in files which you load inside your code as arrays, this way all your stuff is abstracted away as single index into an array. You can then also create functions to locate specific items in your inventory without hardcoding checking each slot for each element (use a loop) and all that. Another big one is using objects and classes. Purely imperative code doesn't lend itself well to game logic where each object may do a different thing. By using objects, you can group items into categories, which all do the same thing, e.g. you have an Enemy class, which holds the name of the enemy, its hit points, special abilities, amount of damage it can inflict on you, etc... this means any enemy can be represented as an instance of this class. Do you see the pattern? [/quote] Hmm... honestly, I'm starting to feel like I may have indeed jumped into this project way too early, because I currently have no clue how I'd go about having multiple classes, and using those together. I'm probably just going to put the project on pause at this point, and wait until I'm finished with my Visual Basic class before picking this up again. However, thank you everyone for your tips. I'll definitely keep this thread saved in my favorites, and will likely update it and reuse it in the future. Farewell all.
  2. [quote name='shadowisadog' timestamp='1353810615' post='5003863'] Perhaps this will help: [url="http://visualbasic.about.com/od/learnvbnet/a/LVBE_L6.htm"]http://visualbasic.a...t/a/LVBE_L6.htm[/url] Starting at the start of the series might be good also: [url="http://visualbasic.about.com/od/learnvbnet/a/LVBE_L1.htm"]http://visualbasic.a...t/a/LVBE_L1.htm[/url] [/quote] Oh wow, thanks for the guide! I'll definitely take a look through it when I get some time.
  3. [quote name='Bacterius' timestamp='1353810293' post='5003861'] I think you did not get any advice because the post is just far too big (and the absence of code formatting doesn't help either - don't they work? if not, you can always try pastebin). But honestly, there is just too much code, and from what I can tell there is a lot of redundancy in it. Basically, your code lacks abstraction - everything is hardcoded in, which makes the code very inflexible and reading/adding/deleting stuff from the code is very difficult. Also, the interface code and the logic code are jumbled together, which makes it even more difficult to follow the code. This is not to say that the code is horrible. It's a good start, but you need to rethink your design, right now it is not viable. It is typical beginner code which makes too heavy use of single conditions (if/then/else), and this is not to belittle you - we've all started there - but, simply but, good code is not a sequence of if/then/else statements. You need to learn how to separate interface from implementation, work out design patterns to simplify code, etc... There is this nice exercise I like to recommend to people who are at about your level - implement a 9x9 sudoku generator (it doesn't have to solve it - just create a valid one randomly). Then, when you're done, extend the code to generate an [eqn]N^2 imes N^2[/eqn] sudoku where N is any integer within reason (let the user specify the size at the start of the program!). With your current design, you will get stuck at the second part, which'll force you to think outside the box. [/quote] Hmm. Thanks again for the tips.. I do realize this is a pretty big undertaking, especially for my current level. But, I do feel like I -can- make what I'm trying to do work... it'd be extremely tedious, but I could make it work. And of course, as time goes on and I learn more code fundamentals, such as arrays, I'll use them. Could you believe that I had originally tried to make this game with nothing more than If statements? Then I learned sub procedures. But.. as for the way I'm trying to do it now.. do you have any tips for making it easier? Or perhaps a couple tips on how to code this in an easier way? Such as using sub procedures. You said something about good code not being just a crapload of If statements... so, what can I do instead?
  4. [quote name='shadowisadog' timestamp='1353809941' post='5003859'] My advice would be to switch to a data driven design. Using XML or JSON files to handle the data behind the game (the numeric values, the battle text, the levels, ect) would make it so that you could add to the game and modify parts of the game without needing to modify the code. Separating the data from your game logic will help make your code easier to read and it will make changes/expansion easier. [/quote] Thank you for the tip. I have no clue how to go about doing all that at this point, but I'll get there eventually. And when I do, I'll be sure to do this. Thanks again.
  5. Edit: I'm aware that the bits of code I've posted aren't properly spaced. Something about this word processor didn't like tabbing, so I'll have to go in and put the spaces myself... in other words, if you're seeing this Edit message and the code looks like shit, I'm probably fixing it at this very moment! Thank you for your patience. I know unspaced code is a nightmare to read. Hence why it does it automatically in the programmer. Edit: I've put in some spacing... and actually, I figured out that it doesn't like spaces at all, so I'm having to use dots to space it. Which is a pain. But, it must be done. Edit: Ugh, noticed another flaw created by this word processor... apparently, every time the symbol "&" was used, it put some funny stuff after it. I'll clear that out later, but for now, just know that that stuff isn't supposed to be there. I've never seen so many problems with a forum poster. Hey everyone. I've seen many other posts say it, so I'll go ahead and throw in that this is my first post on these forums as well. So, yay. Let's get right to it. I'm currently learning Visual Basic, and I feel that I've learned enough to get started on creating my own text-based adventure game. I'll post the entire code that I have so far below for inspection. I'd like to know if I'm on the right track. I'll probably select bits and pieces of the code afterward, and explain what happens, to save you guys the headache. It may or may not seem complex to you- I know I for one am impressed with what I've come up with so far. To think that I started with just a couple If statements. So far, I've pretty much got about half of the combat system worked out. You can choose what you want to attack with, and it'll do damage, and will move on after the enemy dies, but the enemy doesn't fight back yet. I'll get to that. For now, I'm working on the adventure part of the game... where you can actually move from territory to territory, search for items, etc. This part is largely unfinished, but the idea will be something like this: When you enter an area, it'll detect what area that is, and it'll detect what stage that area is in, and display a bit of text to describe it appropriately. From there, you'll have three options: move on, search, and inventory. Inventory is just disabled at the moment, I'll put that in a while later from now. If you choose move on, the game will again detect where you are and what stage the area is in... it'll account for all the appropriate variables... and display an appropriate message of all the exits. It'll also assign the exits to forward/back/left/right options, which will be done by it detecting which area you were in previously (if you were in x room, then your direction is north, and selecting back will take you south / if you were in x room, then your direction is south, and selecting back will take you north). And if you choose search, it'll look at all the appropriate things again, and display an appropriate message describing things in the area which you could possibly inspect. For example, if you enter an area for the first time, let's say there's a dagger in the corner. It would tell you there's a dagger in the corner. You could then type "inspect dagger" and it'll give you options... such as leave dagger/take dagger. If you leave the dagger, then obviously nothing changes. However, if you take the dagger... these are the sorts of things which will change the stage of an area. So in the future, when you come back to the room, and if you've taken the dagger, it won't tell you there's a dagger there anymore. It would instead, perhaps, mention a dagger-shaped clear spot in some dust, in that same corner, from where you took it. This would obviously create, frankly, a shitload of these "stages" when I get to having multiple items in a room. A bucket, a dagger, a sword, a key, a torch, a lamp, a... whatever. I feel like I'm definitely going to have to find a way to avoid this... perhaps somehow using multiple labels... but I don't know. This is an area I feel I need help in. For now, I'm going to avoid having more than one or two items. Which would, right there, create 4 different stages. x.x So. In the future, I plan on giving every item a durability. I think I'm going to set it up where, as the durability goes down, the weapon/armor becomes increasingly useless- damage/defense bonuses go away, increasingly. And once/if it reaches 0, the item completely breaks down, either into nothing or just some bits of scrap... probably bits of scrap. And I'm going to make it where you can scavenge materials from things... such as breaking a bucket for bits of wood... and you'll be able to use these in conjunction with tools to repair your gear. So it'll be a constant fight to keep yourself well-geared. The more you fight, the more you have to manage yourself. In other words, no Leeroy Jenkins. Unless you're prepared. I really love the idea of this feature, because it requires you to use caution. If you get in too deep, by the time you get out, your gear may be so heavily damaged that you find yourself unable to enter areas which you previously had no problem with. I also plan on there being an ability for you to clear out and make use of enemy strongholds. Like, if you completely eliminate the current enemy presence there, then you'll be free to set up camp. Now, in conjunction with this system, I'd like to set it up to where that bit of territory looks at the surrounding territories, and determines a percentage of invasion... and this percentage will be rolled every time you move... no matter where you are in the game. So obviously the percentage would be very low, but the point is, that if you don't manage the territory AROUND your base, then you may find it destroyed and overrun when you return. I'd also like to make it where the enemy can push out and expand, taking over territory. So there'll be a sort of tug-of-war. And yes, I'd love to also have the possibility in there for you to completely eliminate an enemy faction, where you never have to worry about them anymore. Taking out the source would obviously be a huge ordeal, but yeah. The point is the possibility being there. I currently don't really have any plan to put in allies... I feel like I want to make it a sort of "you're on your own" type of game, where the entire goal is to get something which will get you out of this hellhole and back to civilization. But if I do put friendly factions in there, I'd love to give them bases of their own, coupled with the expansion system seen above... which would obviously eventually lead to constant border fighting between friendly and enemy factions, whether you're there or not. [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img] As far as natural creatures, not pertaining to any faction... they'll obviously thrive where no faction has control. I think I'll give uncontrolled areas a certain percentage for spawning creatures... reproduction and all that... and it'll go up over time, to 100%. This would naturally make it harder and harder to fight an enemy as you get closer to its source. I'll probably use the same system for friendly/enemy factions. But what I think I'll do is, if the territory is under control by one faction or another, that percentage will slowly die down, as whatever group goes around and weeds out the source of the problem... until that goes to 0%. So yes, again, the natural creatures could be completely eliminated. I want this game to contain those extreme possibilities. That's what makes a game interesting, no? Nobody really likes a game where everything is scripted. Well, I don't. So those are ideas for the future. I guess I'll get to explaining what I have now. Here's the code. Oh, and once again, if you want a walkthrough of how this works, scroll down to after the code. Public Class Form1 ...Dim gameMode As String = "adventure" ...'Battle Variables ...Dim enemyHealth As Integer = 0 ...Dim battleChoice As String = Nothing ...Dim enemy As String = Nothing ...Dim health As Integer = 1000 ...Dim dragon As Boolean = True ...Dim dragonHealth As Integer = 50 ...Dim battleChoiceVisited As Boolean = False ...Dim enemyHealthDisplayed As Boolean = False ...'Attack Variables ...Dim attack As Boolean = False ...Dim attackChoice As String = Nothing ...Dim attackChoiceDamage As Integer = 0 ...Dim dagger As Boolean = False ...Dim daggerDamage As Integer = 25 ...Dim fireball As Boolean = False ...Dim fireballDamage As Integer = 50 ...Dim attackDamage As Integer = 0 ...Dim attackChoiceVisited As Boolean = False ...'Heal Variables ...Dim heal As Boolean = False ...Dim weakHeal As Boolean = False ...Dim healChoice As String = Nothing ...Dim healChoiceAmount As Integer = 0 ...Dim weakHealAmount As Integer = 0 ...Dim strongHeal As Boolean = False ...Dim strongHealAmount As Integer = 0 ...Dim healAmount As Integer = 0 ...Dim healChoiceVisited As Boolean = False ...'Adventure Variables ...Dim adventureChoice As String = Nothing ...Dim worldLocation As String = "rockslide" ...Dim rockslideStage As Integer = 1 ...Dim adventureChoiceVisited As Boolean = False ...Dim forestEntranceStage As Integer = 1 ...'Search Variables ...Dim searchChoice As String = Nothing ...Dim search As Boolean = False ...'Move On Variables ...Dim moveOnChoice As String = Nothing ...Dim moveOn As Boolean = False ...'Inventory Variables ...Dim inventory As Boolean = False ...Private Sub btnAction_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAction.Click ......Select Case gameMode .........Case "battle" ............Call Battle() .........Case "adventure" ............Call Adventure() ......End Select ...End Sub ...Sub Battle() ......If enemyHealthDisplayed = False Then .........Me.lblEnemyHealth.Text = "Enemy Health: " &amp;amp; enemyHealth .........enemyHealthDisplayed = True ......End If ......If battleChoice = Nothing Then .........Call ChooseBattleChoice() ......End If ......If battleChoice = "attack" Then .........If attackChoice = Nothing Then ............Call ChooseAttackChoice() .........End If .........If attackChoice <> Nothing Then ............Call AttackResult() .........End If ......ElseIf battleChoice = "heal" Then .........If healChoice = Nothing Then ............Call ChooseHealChoice() .........End If .........If healChoice <> Nothing Then ...........Call HealResult() .........End If ......End If ...End Sub ...Sub ChooseBattleChoice() ......If Me.txtAction.Text = "attack" Then .........If attack = True Then ............battlechoice = "attack" .........Else ............Call InvalidEntry() .........End If ......ElseIf Me.txtAction.Text = "heal" Then .........If heal = True Then ............battlechoice = "heal" .........Else ............Call InvalidEntry() .........End If ......Else .........If battleChoiceVisited = False Then ............Me.lblPrompt.Text = "A " &amp;amp; enemy &amp;amp; " stands before you! What will you do?" ............battleChoiceVisited = True .........Else ............Call InvalidEntry() .........End If ......End If ...End Sub ...Sub ChooseAttackChoice() If Me.txtAction.Text = "dagger" Then If dagger = True Then attackChoice = "dagger" attackChoiceDamage = daggerDamage Else Call InvalidEntry() End If ElseIf Me.txtAction.Text = "fireball" Then If fireball = True Then attackChoice = "fireball" attackChoiceDamage = fireballDamage Else Call InvalidEntry() End If Else If battleChoiceVisited = False Then Me.lblPrompt.Text = "What will you attack with?" battleChoiceVisited = True Else Call InvalidEntry() End If End If ...End Sub ...Sub AttackResult() attackDamage = attackChoiceDamage enemyHealth = enemyHealth - attackDamage If enemyHealth > 0 Then Me.lblEnemyHealth.Text = "Enemy Health: " &amp;amp; enemyHealth Else Me.lblEnemyHealth.Text = "Enemy Health: 0" End If MessageBox.Show("You deal " &amp;amp; attackDamage &amp;amp; " damage to the " &amp;amp; enemy &amp;amp; " with your " &amp;amp; attackChoice &amp;amp; "!") battlechoice = Nothing attackChoice = Nothing attackDamage = 0 attackChoiceDamage = 0 battleChoiceVisited = False attackChoiceVisited = False If enemyHealth <= 0 Then MessageBox.Show("You killed the " &amp;amp; enemy &amp;amp; "!") Me.lblEnemyHealth.Text = Nothing enemyHealthDisplayed = False gameMode = "adventure" Call Adventure() Else Call Battle() End If ...End Sub ...Sub ChooseHealChoice() If Me.txtAction.Text = "small heal" Then If weakHeal = True Then healChoice = "small heal" healChoiceAmount = weakHealAmount Else Call InvalidEntry() End If ElseIf Me.txtAction.Text = "large heal" Then If strongHeal = True Then healChoice = "large heal" healChoiceAmount = strongHealAmount Else Call InvalidEntry() End If Else If healChoiceVisited = False Then Me.lblPrompt.Text = "What will you heal with?" healChoiceVisited = True Else Call InvalidEntry() End If End If ...End Sub ...Sub HealResult() healAmount = healChoiceAmount health = health + healAmount If health < 1000 Then Me.lblHealth.Text = "Health: " &amp;amp; health Else Me.lblHealth.Text = "Health: 1000" End If MessageBox.Show("You restore " &amp;amp; healAmount &amp;amp; " health with your " &amp;amp; healChoice &amp;amp; "!") battlechoice = Nothing healChoice = Nothing healAmount = 0 healChoiceAmount = 0 Call Battle() ...End Sub ...Sub Adventure() If adventureChoice = Nothing Then Call ChooseAdventureChoice() End If If adventureChoice = "search" Then If searchChoice = Nothing Then Call ChooseSearchChoice() End If If searchChoice <> Nothing Then Call SearchResult() End If ElseIf adventureChoice = "move on" Then If moveOnChoice = Nothing Then Call ChooseMoveOnChoice() End If If moveOnChoice <> Nothing Then Call MoveOnResult() End If ElseIf adventureChoice = "inventory" Then Call Filler() End If ...End Sub ...Sub ChooseAdventureChoice() Select Case worldLocation Case "rockslide" Select Case rockslideStage Case 1 If Me.txtAction.Text = "search" Then If search = True Then adventureChoice = "search" Else Call InvalidEntry() End If ElseIf Me.txtAction.Text = "move on" Then If moveOn = True Then adventureChoice = "move on" Else Call InvalidEntry() End If ElseIf Me.txtAction.Text = "inventory" Then If inventory = True Then adventureChoice = "inventory" Else Call InvalidEntry() End If Else If adventureChoiceVisited = False Then Me.txtAction.Text = "filler" adventureChoiceVisited = True Else Call InvalidEntry() End If End If Case 2 Call Filler() End Select Case "forestEntrance" Select Case forestEntranceStage Case 1 Call Filler() Case 2 Call Filler() End Select End Select ...End Sub ...Sub ChooseSearchChoice() ...End Sub ...Sub SearchResult() ...End Sub ...Sub ChooseMoveOnChoice() ...End Sub ...Sub MoveOnResult() ...End Sub ...Sub AdventureResult() ...End Sub ...Sub InvalidEntry() ......MessageBox.Show("Invalid entry.") ...End Sub ...Sub GameLoad() Handles MyBase.Load ......Call Adventure() ...End Sub ...Sub Filler() ......MessageBox.Show("Feature not available.") ...End Sub End Class ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I'll explain how battle works. Now, what'll happen is, when it's determined that an enemy has shown up, it'll Call Battle, and that will determine if you've made a Battle Choice yet. If battleChoice = Nothing Then ...Call ChooseBattleChoice() End If Obviously, you haven't, so it'll Call ChooseBattleChoice, and that will determine if you've typed in what you want your Battle Choice to be yet. If Me.txtAction.Text = "attack" Then ...~~~ ElseIf Me.txtAction.Text = "heal" Then ...~~~ Else ...~~~ End If And you haven't, so it'll determine if it's run through this bit of code before. Else ...If battleChoiceVisited = False Then ...... ~~~ ...Else ......~~~ ...End If End If And you haven't, so it'll display the type of enemy that's standing before you, the type of enemy being declared in the very beginning, when it was determined by the game that an enemy was going to show up. If battleChoiceVisited = False Then ...Me.lblPrompt.Text = "A " &amp;amp; enemy &amp;amp; " stands before you! What will you do?" ...battleChoiceVisited = True Else ...~~~ End If And it'll run out through the rest of the code and do nothing else, leaving you an opportunity to type something in and click Action, which is what the button is named. Now, if you type anything in other than what it wants you to, it'll run through all the same code, except when it reaches the above part, battleChoiceVisited will be True. If battleChoiceVisited = False Then ...~~~ Else ...Call InvalidEntry() End If So it'll Call InvalidEntry, which simply pops up a Message Box saying "Invalid entry." and it'll run through the rest of the code, doing nothing. Now, if you type something in properly, it'll notice that, and assign Battle Choice the appropriate thing. For this instance, let's say Attack was chosen. It'll also take note of whether you actually can attack or not at this moment, and if you can't, it'll Call InvalidEntry. If Me.txtAction.Text = "attack" Then ...If attack = True Then ......battlechoice = "attack" ...Else ......Call InvalidEntry() ...End If ElseIf Me.txtAction.Text = "heal" Then ...~~~ Else ...~~~ End If Then, it'll pull out of the sub procedure ChooseBattleChoice, and run on down, taking note of what choice you made. If battleChoice = "attack" Then ...If attackChoice = Nothing Then ......Call ChooseAttackChoice() ...End If ...If attackChoice <> Nothing Then ......Call AttackResult() ...End If ElseIf battleChoice = "heal" Then ...~~~ End If It'll do much the same thing it did before, with deciding if you've made an Attack Choice or not. It'll run through all that same stuff, only for making an Attack Choice, and since you haven't made one, and also haven't typed in what you want it to be... If Me.txtAction.Text = "dagger" Then ...~~~ ElseIf Me.txtAction.Text = "fireball" Then ...~~~ Else ...If battleChoiceVisited = False Then ......Me.lblPrompt.Text = "What will you attack with?" ......battleChoiceVisited = True ...Else ......Call InvalidEntry() ...End If End If It'll ask you what you want to attack with. If you don't type in something proper, it calls InvalidEntry... if you do, it notes that choice, and runs on down the code, assuming you actually CAN use a dagger... or a fireball... this is how I will enable/disable weapons in the game. If they break... if you find them... if you get them stolen... all will change that weapon/ability variable to True/False. Now, once you make your selection.. If attackChoice <> Nothing Then ...Call AttackResult() End If And from here it'll run through the AttackResult procedure... which I'm sure you can figure out what that does just by looking at it. Sub AttackResult() ...attackDamage = attackChoiceDamage ...enemyHealth = enemyHealth - attackDamage ...If enemyHealth > 0 Then ......Me.lblEnemyHealth.Text = "Enemy Health: " &amp;amp; enemyHealth ...Else ......Me.lblEnemyHealth.Text = "Enemy Health: 0" ...End If ...MessageBox.Show("You deal " &amp;amp; attackDamage &amp;amp; " damage to the " &amp;amp; enemy &amp;amp; " with your " &amp;amp; attackChoice &amp;amp; "!") ...battlechoice = Nothing ...attackChoice = Nothing ...attackDamage = 0 ...attackChoiceDamage = 0 ...battleChoiceVisited = False ...attackChoiceVisited = False ...If enemyHealth <= 0 Then ......MessageBox.Show("You killed the " &amp;amp; enemy &amp;amp; "!") ......Me.lblEnemyHealth.Text = Nothing ......enemyHealthDisplayed = False ......gameMode = "adventure" ......Call Adventure() ...Else ......Call Battle() ...End If End Sub No big secrets here, no need for an insanely-detailed explanation. Once you make your choice, after it calculates all the damage and displays the results, it'll clear your choices so that when it runs through the code again, you'll have to make your choices again. And if the enemy dies, it says so, and ends the fight and returns you to adventure mode appropriately. This does of course quickly lead to redundancy... I hope to find a way to cut that out in the future. This is another area I may need help on. Perhaps I'll put in a "redo previous action" choice, which will check to make sure that it actually can redo the choice. If so, it'll just quickly change the battleChoice and attackChoice (assuming you attack) variables to their appropriate thing, and run through the AttackResult. So, say for example, your poison wears off, it'll still let you know. I'm very big on not having bugs in my programming. If there's a problem, I find a way to fix it. As it is insanely unfinished, I'm not going to bother with trying to explain the adventure part of it all. I pretty much did so in the very beginning. You can see how all of this is pretty much taking on the same general form. No real surprises in the structure of the code. It checks for things, makes decisions based on the things. That's pretty much it, I suppose... geeze, I sure did write out a lot, didn't I? Well, I have been looking for a great place to discuss my game, and get advice for how to move forward. This seems like the perfect place. Much better than asking around in the General chat of some game. I greatly look forward to any responses. Thank you for taking the time to read through all this. Have a nice day! [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img]