-
Content Count
1,023 -
Joined
-
Last visited
-
Days Won
26
Content Type
Profiles
Forums
Blogs
Downloads
Calendar
Gallery
Everything posted by kellessdee
-
Moonpearl's Keywords System
kellessdee replied to Moonpearl's topic in Archived RPG Maker XP Scripts (RGSS1)
@bigace: shhhhhh....I don't play modern games..... (Actually, I should have realized that...I totally forgot in-game choices haven't changed since before graphics, or, you got me there! :P) -
Moonpearl's Animated Custom Menu System
kellessdee replied to Moonpearl's topic in Archived RPG Maker XP Scripts (RGSS1)
@moonpearl: A well-designed interface always catches my eye :3 I can tell you put a lot of thought into it. And, just as I thought, the transitions/fonts were a non-issue. Those tidbits should be up to the user of the script rather than the scripter anyways, IMO. -
Hello, and welcome to RMXP Unlimited! If you need any help, I would suggest creating a thread in one of the RPG Maker Forums (XP/VX depending on the maker you need help with) I hope you enjoy your time here.
-
Yea that's the problem ... you can't satisfy everyone :( . Which is my issue for creating public scripts - when I create for non-scripters I always want to remove as much programming specific things from the customization as possible, which performance-wise is usually not efficient. Any way, I think we both are getting a bit off topic now (thanks to my innate ability to derail threads)
-
Ah yes, your example would be more readable than my example. However, for a non-scripter, I still think that structure still would be confusing. I know, there's not much you can do about that in the first place (there will always be a certain level of confusion), which is why I believe these kinds of things were not suited for arrays/hashes at all, and creating either a struct or class based around the model would be more efficient...as well as it could be added to the existing actor data structures: $data_actors[1].gender = 'Male' $data_actors[2].age = 13 With the enumeration, that's what I was referring to, by being easier for non-scripters to add features (then, features are simply added, rather than added, then manually drawn). The issue with enumeration (in this case), is that you still need some way to handle A) Multi-line features (such as biography/history). B) Features in different columns. (Otherwise, you are absolutely correct about the enumeration, although the current design *may* need to change in order to fit enumeration better...unless you want to write some algorithms to correctly determine/split up multiple lines, as well as add a way to customize which column the feature is placed in, and auto-sizing/positioning, etc.) But really, in the end, it's difficult to design scripts for non-scripters to work with. There isn't really a "best" model, in those terms. Which is why *I personally believe* that a structured, object model is the best...after all, ruby is object oriented. My personal preference, for customizable, list-based data structures would be: # Pretend we have the user modify a text file that defines an actor's # Biography: def biography(id) case id when 1 then "aluxes_bio.txt" when 2 then "basil_bio.txt" end end I believe, that "when x then y" is easier to comprehend, than "= [ { key => value } ]" for non-scripters. But, that's what I believe...and that would depend on the user as well. This also means, performance-wise, that no array/hash/string/objects are even instantiated/stored in memory, until used and they definitely, do not persist in memory for the entire running-time of the game. EDIT: Oh yea, forgot to mention, being a lazy programmer, to an extent (especially in the context you are referring to it) is a good thing. The number one philosophy in the Ruby community (and with most languages as well) is DRY (Don't Repeat Yourself), which I am sure you have heard a lot. It's easier to do this with duck-typing...which is why Ruby is really focussed around these concepts.
-
@moonpearl: I see what you are saying, but is adding a new constant array or adding a new key => array and then processing it actually saving any work (note that the current model uses an array, each index points to the actor ID in the database)? You would still need to add the new feature (with unique name and all), and then adjust the processing. Setting up a flexible hash and loop may make it easier for non-scripters to add functionality...but for the scripter it's not THAT much of a time saver. But really, in this scenario; I think neither an array nor a hash is really a good model. A good object oriented structure would probably define a biography as its own specific data structure, one instance for each actor. That would be much more flexible. Also, hashes are easy for you to set up, because you already know how and understand. Explaining the syntax of a ruby hash to someone who isn't even familiar with any programming language syntax can be mind-boggling. Especially if you did something like this: # Set up actor biographies here: # Make sure that the feature points => to a list # that corresponds to the correct actor id in the database @@biographies = { :gender => [ 'Male', 'Female', 'Male' ], :specialty => [ 'Swords', 'Guns', 'Spears'] } # Or @@biographies = {} @@biographies[:gender][0] = 'Male' @@biographies[:gender][1] = 'Female' # etc. If you expanded this to fit say 10 actors in the database, I think it would be enough to hurt even a professional programmer's head. With an object-oriented language to the extent of ruby, IMO, one should be careful not to lump everything into a list or table data structure (of course unless, that is the best way to describe the structure)
-
I don't like the hostility I am seeing here. Moonpearl and Bigace, please smarten up. @moonpearl: Bigace didn't ask for suggestions on the source code itself. There is nothing wrong with making such suggestions, but you should actually give suggestions/ask questions. Cryptic/vague rhetoric makes you sound arrogant. @bigace: Regardless of whatever you felt moonpearl's intentions were, there is no reason to make personal attacks. I think this is all just a big misunderstanding, and I wanted to douse the fires before it got too large. If either of you feel I am being unfair/wrong, please PM me or another staff member, and keep this topic for discussing the script. Back to discussion: @bigace: Nifty little script. Looks nice. Personally, I would change the way the name, gender, age, etc. are aligned, to make it look a little neater. Probably, the best would be to align the caption (ie. name:, gender:, age:) to the right, then put the data left-aligned next to it, to make all the data aligned at the colon `:` @moonpearl: If the flexibility issue lies within using constants, shouldn't your suggestion be to not use constants (and use instance/class variables), rather than hashes? Hashes can be constants as well -- but arrays have better performance rates and, IMO, conceptually less-confusing to non-scripters. Just my two cents--in the end, for something like this, I think it's kind of a non-issue (especially if it works). Although, that is an interesting suggestion for dynamic biographies, I have never seen that before.
-
Moonpearl's Animated Custom Menu System
kellessdee replied to Moonpearl's topic in Archived RPG Maker XP Scripts (RGSS1)
As I said before, it's a very nice menu! You have a good eye for design. I really dig the clean interface/layout. (I, ESPECIALLY, love the simplistic window boxes.) My only criticisms (which are non-issue, and mostly just personal preference xD), would be some of the transition times (I like my menus fast and instant) and the comic-esque font face (which, of course, is extremely non-issue - at least it's readable :3) Well done good sir. I will have to poke around the source code eventually... I have a feeling there's some pretty well-written ruby behind all of this and, it may be a secret (well, probably not really) but I get off on reading good source code (better than most novels) (better than all tv) (not even lying) -
Moonpearl's Keywords System
kellessdee replied to Moonpearl's topic in Archived RPG Maker XP Scripts (RGSS1)
Shnazzeh :3 (that's supposed to be a good thing) Reminds me of those old school RPGs, a very nice blend of text-based adventures and 2D RPGs good work :) -
@ragemage: Yea, it's kinda disappointing...although, in the same breath; it's kinda nice to see that enterbrain noticed that they messed up when they took those features out. @noobsaibot: I guess you could say that...but I wouldn't. I would say more, it's VX done right. Sure, enterbrain should have done it this way the first time around - but they thought simplifying the maker was good..then realized it wasn't. You gotta give 'em credit for actually refining the system and solving a lot of things that were bad about VX. To me, VXAce to VX is what Windows 7 was to Vista. It's essentially the same thing, but it works...rather than being broken. @arkbennet: I think you should at least give it a whirl (especially if you like the RPG Maker series at all). It's actually A LOT different than VX, than people give it credit for. Sure, it's mostly the same RTP and same interface...but it's VERY different. The database is streamlined (and MUCH more flexible/powerful), the default scripts are better organized (and more well written), and, and, and, and Ruby 1.9.2!!!! [rant] I think people fail to see HOW Ruby 1.9.2 makes this engine much better, but should really pay attention to this: What I am mainly trying to convey, is the comparison between 1.8 and 1.9 (IronRuby is simply a 3rd party ruby interpreter, that works with the .NET framework) The "total times" are based on a series of benchmarks run through each interpreter (more details here: http://programmingzen.com/2009/08/03/performance-of-ironruby-ruby-on-windows/) 2933 vs. 664? That's nearly 5 times faster... Ruby 1.9 actually even holds its own against python (which is generally known for being a high performance scripting language). So what does that mean? Faster code, means RPG Maker VXAce can handle much more complex scripts...this is HUGE potential for a simplified game making program (considering some of the things I have seen done with just XP). [/rant] Sorry guys, I had to. I won't stop until everyone is excited about this fact.
-
1. The instructions state to change the picture file to be named "splash," not the background variable in the script. Did you set Background = splash or did you actually set the picture file's name to be splash? 2. Normally, I am not a stickler for necroposting, but this topic has already been necro'd before. Please check the dates of the topic before posting (the OP is like 2 years old) If you really need help, you should probably start a new topic requesting help. more info: http://www.rmxpunlim...es#necroposting 3. Gamers (well I know I do) HATE loading screens/times...even when they are necessary in large 3d games. Why would you want to make your players sit through a fake loading screen...that doesn't even load anything or do anything other than make the player wait? I don't mean to be so harsh, but isn't that a little sadistic, making your players sit through pointless loading screens? (Just trying to help, really) EDIT: Oh yea, 4. What Bigace said.
-
Hey no problem. I'm glad it made sense, and wasn't just more inane rambling... also, I really like your take on the ring menu, that sounds like a really neat approach!
-
ruby Learning Ruby -- Master Topic
kellessdee replied to kellessdee's topic in Programming & Web Development
Lesson 7: Flow Control -- Loops has been released! Sorry for the wait guys, I got busy...with...other...things... -
Lesson 7: Flow Control - Looping Ah, looping. Loops, in my opinion, are what separate a "script" from a "program." So, here comes the obligatory... What is a loop? Think of the word loop, in the terms of a song loop -- we say a song is looping when it repeats, once it reaches the end. A loop in programming, is generally a block of code that is repeated any arbitrary number of times. For example, at its very essence, all a video game is, is a huge loop continuously taking input and reacting based on the input and the game's current state, until the player quits the game. So how does it work? Well, in ruby, there are actually many ways to "loop" or iterate -- as it's commonly referred to as -- let's start with the while loop. while condition do # Loop block end The `do` portion of the while - loop syntax is optional -- while condition # Loop block end works as well. So, "while" the "condition" evaluates to true (anything except false or nil), execute block. The while loop will continuously repeat until condition is false or nil. Be Careful -- Endless loops. Endless loops refer to a loop that never ends. This happens because the condition never becomes false. If you get stuck in an endless loop, usually CTRL + C will break the loop. As a programmer, we need to have some kind of control over how long a program repeats its statements. One common method of loop control, is through use of a counter: i = 0 while i < 5 puts "Hello!" i += 1 end the output would be: Hello! Hello! Hello! Hello! Hello! How did this happen? The interpreter sets a variable, `i`, to 0. It then enters the loop: Is i less than 5? yes, display "Hello". i is now 1 Is i less than 5? yes, display "Hello". i is now 2 Is i less than 5? yes, display "Hello". i is now 3 Is i less than 5? yes, display "Hello". i is now 4 Is i less than 5? yes, display "Hello". i is now 5 Is i less than 5? no, i is equal to 5, stop looping. We can use a variable as a counter, and use an arbitrary maximum number of iterations and then by counting the number of iterations we can determine when to stop executing the block. Here's a better example: "In mathematics, the factorial of a non-negative integer n, denoted by n!, is the product of all positive integers less than or equal to n. For example, 5! = 5 x 4 x 3 x 2 x 1 = 120 " (http://en.wikipedia.org/wiki/Factorial) (Yea, I was lazy and they had a better explanation......) Er, let's translate this to our code! Let's say we want a program that takes a number from the user, and calculates that number's factorial. # Calculate the factorial print("Enter a number: ") number = gets.to_i # Get first number factorial = number print("#{number}!\n#{number}") while number > 1 # move to next number number -= 1 # get product of n..n-1 factorial *= number print(" * #{number} ") end puts("= #{factorial}") Test: Enter a number: 5 5! 5 * 4 * 3 * 2 * 1 = 120 Looks good! As you can see, counters can decrement as well. How you do it, will mostly depend on the situation (remember, you don't always have to increment/decrement by 1, either.) Of course, condition can be ANY expression, and is also used to loop based on a program's "current state." Let's go back to the guessing game we created. Wouldn't it be much better if we let the user keep guessing until they quit or guess the number? # Set a number to guess number = 10 # define the current "state" game_over = false while !game_over # Prompt the user to guess what number it is: print("I am thinking of a number. What is it? (Type q to quit) ") # Get the guess guess = gets.strip if guess.upcase == "Q" puts("Goodbye!") # Change current "state" game_over = true elsif guess.to_i < number puts("Too low!") elsif guess.to_i > number puts("Too high!") elsif guess.to_i == number puts("Wow! You got it!") # Won the game, change state game_over = true end end Now, our simple guessing game is actually a game! Well, mostly. We'd want to randomize the number to make it more of a game, but I will go over random number generation another time. For now, it does what we need. The game will now continuously prompt the user until the variable game_over is true. Notice that, we could have instead made a variable, say, game_playing, and set it to true. Then, while game_playing is true, prompt the user -- either way would work. Before we finish, I'd like to introduce to another form of looping, and some more loop control methods. The next loop you will learn about, is called the "for" loop. The for loop can be considered a special type of iterator, but for now, just think of it as a loop with very specific bounds. (I will go over more about for and iterators, in a later lesson) Let's go back to the factorial program we made. If you notice, a factorial always loops a very specific number of times. The number of times it loops may be dependant on the input, but it will always be a set value. This is where for loops come in. for i in 0..5 puts i end produces: 0 1 2 3 4 5 So how does this work? Well, the syntax is: for variable in set # Block end For loops, will iterate through each item in a "set" (for now, we will only discuss ranges), and store the current object in the set, in the variable 'i'. So what happened in the above loop? Well, in Ruby, a Range object (denoted by min..max or min...max), is actually a representation of a set of numbers from min to max. Be careful with ranges, 0..5 means 0 to 5 inclusive, while 0...5 means 0 to 5 exclusive:0..5 => 0, 1, 2, 3, 4, 5 0...5 => 0, 1, 2, 3, 4 Then, based on this analysis, i is first set to 0 (first item in the set), then we print i in the block. When we move to the next item/iteration, i is then set to 1, and we print it. The loop continues this pattern, until we reach the last item, then when there are no items left to be stored in i, we break out of the loop.Why is this useful? Well, let's put this to more practical use. Let's go back to the factorial program -- like I promised. # Calculate the factorial print("Enter a number: ") number = gets.to_i factorial = number for i in 1...number # factorial *= i end puts("#{number}! = #{factorial}")[/code]Note, that unfortunately, ranges don't work in reverse. For example, 5...1 is not 5,4,3,2. It will not work. There are ways to reverse ranges, but that would be treading into an area I want to save for another lesson. Ahem, any who, carrying on... (I apologize for a larger amount of "later..."s, I would like, for this lesson, to focus on the concept of loops, without worrying too much about extra technical details, at least not yet) Another good use of for loops, is for generating rows and columns of display. Say, we want to generate a pattern like this: *************** *************** We could simply hard code a couple puts, and it would work...but what if we want to be able to draw any size? # Get rows and columns print("Enter number of rows: ") rows = gets.to_i print("Enter number of columns: ") cols = gets.to_i # Display pattern for i in 0...rows for j in 0...cols print("*") end print("\n") end could produce: Enter number of rows: 2 Enter number of columns: 15 *************** *************** It may seem silly, but if you can grasp this concept of nested for loops, you will find it VERY useful later on. But what exactly happens? So, rows == 2 and cols == 15. We enter the first loop at i = 0, and the second loop at j = 0. Then j will become 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 (remember, 0...cols is 0 to cols exclusive) and on each iteration, the interpreter will print a `*` on a single line. When we break out of the nested loop, ruby prints a \n (newline character), then i becomes 1. We then reach the nested loop again, and it does the exact same thing, printing 15 `*`s on the next line (notice, 0-14 inclusive or 0-15 exclusive, is 15 different numbers). We break, print a new line, i runs out of numbers (0...rows exclusive => 0, 1) and therefore break from the outerloop, and stop looping altogether. This concept will become very useful, when looping through grid-based data structures. (A single for loop, if you noticed, is meant/really good at looping through list-based data structures). Finally, before I finish loops, I would like to teach you a couple useful control statements for loops -- break, and next. loop do # Prompt the user to guess what number it is: print("I am thinking of a number. What is it? (Type q to quit) ") # Get the guess guess = gets.strip if guess.upcase == "Q" puts("Goodbye!") break end guess = guess.to_i if guess < number puts("Too low!") next end if guess > number puts("Too high!") next end if guess == number puts("Wow! You got it!") break end end So, this is a slightly modified version of our guessing game. If you try it out, you might notice it works exactly the same! Let's analyze what I changed. Firstly, the loop is no longer a while loop... loop do # Code end This is just another form of loop that ruby has, that represents an infinite loop -- when the interpreter finds this, it will continuously loop the block of code. (This is useful for if you need to loop, but not based on a certain state/condition). Now, when a guess is made, if the guess is 'Q' or the right number, the loop will "break." break is a keyword in ruby, and is also a special function. It will "break out" of the current, immediate loop, and stop looping (Note, if you use break in a nested loop, it will only break out of the loop it is called from, not all loops). We also, use `next` if the number is incorrect. next is like break (a special function for controlling loops), but what it does, is tell the ruby interpreter to skip to the "next" iteration, meaning next will skip the rest of the block of code, and restart the loop. If used in a for loop, this also means i becomes the next item in the list. Well, that's all for today's lesson! I apologize for taking so long this time. Things are getting busy for me again, and I may take a little bit longer to finish each lesson. I will try my best, however, to keep the lessons coming once a week! Now, I will leave you with a few more challenges: 1. Make a simple "menu" script, that will continuously prompt the user to enter a numeric selection, and display a different message based on the input. If the user types "q" or "Q" the menu should stop. 2. Write a script that will generate this output: * ** *** **** ***** ****** ******* ******** ********* ********** or, if you're feeling really creative, try making it look like this: * *** ***** ******* ********* *********** (Kinda late for Christmas isn't it????) 3. The formula for converting degrees celsius to degrees fahrenheit is: F = C * 9 / 5 + 32 Write a script that will display a Celsius -> Fahrenheit conversion table from -10 celsius to 40 celsius. i.e -10C = 14F -9C = 15.8F -8C = 17.6F -7C = 19.4F ...etc.
-
Are you looking for a script like this, or looking for how to do it? I can actually provide you with a bit of both. First, I'll explain the math a bit. You remember trigonometry? If you do, it will help. If not, that's okay -- you just need the basic concepts anyways. So to create a menu like this, we essentially need to be able to plot points on a circle, evenly distributed, to position our menu items and we need to be able to rotate those points. To do this, we need a couple of things (luckily, when working with a menu, we generally already know or at least can acquire these) 1. The circle's center point x, y 2. The circle's radius So how do we plot the points? Well, we know a circle is made up of 360 degrees of rotation (think like a compass, you start out at one line segment (0, 0) -> (0, radius) (or something) and rotate that line 360 degrees, and the end points would define the boundaries of that circle) So, we can set a "section" of the circle (or piece of the pie, if you will) for each menu item. We can refer to each piece, as being a portion of 360 degrees. So, say you have 8 menu items, each item would get their own 45 degree section - 0, 45, 90, 135, 180, 225, 270, 335, respectively. Now, we need to find their specific points on that circle. We can think of each point on a circle's circumference as being the end point of a line from the center of the circle -> the edge of the circle. In a circle, we know that each point must be an equal distance from the center -- the distance/length being the radius of course. So let's look at the very bottom point. Assuming the circle's center is the origin (0, 0), we know that this would be (0, radius), and in a 90 degrees (clockwise) rotation, the next point would be (-radius, 0). But how do we calculate that rotation? Well, the rotation of a line segment (or vector) is calculated as so: x = cos(angle) * length y = sin(angle) * length in this case, the length would be the circle's radius. Now, this would assume we are rotating this line around the origin (0, 0), so to apply this to rotating around a specific point, we would just shift the origin over to the center point of rotation (in this case the center of the circle) x = cos(angle) * length + cx y = sin(angle) * length + cy cx being the center's x and cy being the center's y. As a forewarning, since we are referring to applying this to a game, in most programming languages (that I know of, anyways), the built in sine/cosine functions take the angle in radians rather than degrees. If we need to convert to radians, the formula is: radians = degrees * PI/180 So, some pseudocode: set rotation step to 360 / number of menu items for each step in rotation from 0 to 360 get rotation in radians set x to cos(radians) * radius + center x set y to sin(radians) * radius + center y Then we can easily draw each item at that specific position. Or, you could even just go through each menu item: for each menu item set rotation to (360 / number of menu items) * current index of menu item get rotation in radians set x to cos(radians) * radius + center x set y to sin(radians) * radius + center y You'll probably want to save the "step" (degree increments) value, for if you wish to rotate each item in an animation, then you can simply add x degrees of rotation to the item from 0 to the maximum rotation step and calculate that intermediary position each frame (until it reaches it's destination) With those basics, we can apply this to the halo scenario as well -- in a 2D environment, a "halo" as you described is simply just an elongated circle (or ellipse). The difference between an ellipse and a circle, is mainly that an ellipse has 2 radii - a width or x radius and a height or y radius. So, calculating the points would be slightly different: x = cos(angle) * x_radius + cx y = sin(angle) * y_radius + cy Then, the only thing you have to ensure, is that the items "behind" the player are drawn underneath the player (using the z component) -- at this point you could even apply some zooming techniques, to give it a pseudo-3d feel. Important Note: In standard math, 0 degrees/radians points right (or east), if you want to convert degrees to radians where 0 is north, simply "shift" the degrees part to where you want it, before converting. So, to get 0 to be north, we need to subtract 90 degrees and then convert: (degrees - 90) * PI / 180. Likewise, if you want 0 to be south, we need to add 90 degrees and then convert: (degrees + 90) * PI / 180 Now, if you wanna see this actually applied somewhere: http://www.rmxpunlimited.net/resources/scripts/item/ring-menu-vx?category_id=10 http://xrpg2.clicdev.com/f/index.php?showtopic=111 (I used to know one that was REALLY good, extensible and included the "halo" effect you described, with proper zooming/z-ordering...if I find it again, I'll let you know) Hope this helps, or at least gets you on the right track :D
-
Welcome to RMXPUnlimited! We all had to start somewhere, so if you have any questions (as I'm sure we've all bombarded you with....but hey, we take pride in helping others :D) just ask! I hope you enjoy your stay here, see ya around.
-
ruby Gosu -- A Ruby Game Development Library
kellessdee replied to kellessdee's topic in Programming & Web Development
@pol: no worries :D rubygems are just a package manager (like apt-get or yum), except for ruby libraries and whatnot @rage: lol, I hear that man. happens to me all the time :( And yes, that's the same YARD http://yardoc.org/ I guess I should've mentioned that as well -- RDoc/YARD are just auto-documenting tools for ruby. They each have their own style/standards, but are equally useful. -
Welcome to rmxpunlimited! It's nice to see another programmer around here! I'd love to see your work, you should share! If you don't mind me asking, do you have any more information on this Ruby Game development framework? I'd be really interested in following this project... Any way, I hope you enjoy your time here, and to see you around here often.
-
ruby Gosu -- A Ruby Game Development Library
kellessdee replied to kellessdee's topic in Programming & Web Development
Yes, you are correct. This is simply because the gosu gem does not include ri/RDoc documentation...it actually uses YARD --which like you said is available online. So, gosu will run fine -- just no local documentation. To view installed gem's documentation, you can run the command gem server then visit localhost:8808 in your web browser to view documentation/all installed gems (gosu should still show up, and actually link to the website rather than local documentation) EDIT: Weird, my Gosu appears to have RDocs...(I still like the online reference better) You may need to install rdoc for it to work :/ gem install rdoc -
ruby Gosu -- A Ruby Game Development Library
kellessdee replied to kellessdee's topic in Programming & Web Development
If you have RubyGems (should come with ruby, i think :/), you need to issue that command from a command prompt/terminal/console, not as a ruby script. Type gem --version in the console, and if it prints something out, then you have gems installed. Then you can just type gem install gosu to install. If gem --version generates an error, you will probably need to install ruby gems: http://rubygems.org/pages/download -
Which language do you prefer
kellessdee replied to RageMage's topic in Programming & Web Development
Me too! Fedora 16 + Windows 7 for gaming xD. I guess I should be more clear about my C/C++ presumptions...it would be more like C++ is C, but C is not C++. C is a direct superset of C, containing the C language, plus new features/library (Object oriented, etc.) C++ was designed to improve C and follow nearly the same syntax. There is new syntax, but you can still use C's libraries and what have you. So, C is nothing like C++, but C++ is very much like C, plus plus! (terrible joke i know) If that makes sense. I generalize too much, and it gets the better of me often :( And I won't disagree that .NET is a VERY good, and QUITE useful framework. And since it works with many languages, it's really nifty that you don't have to learn several frameworks. The only downside (and quite a large one, to me any way) is that it is proprietary. There are things like mono, but it's not the same :( Because to be honest, I actually really like C# and .NET, it just REALLY irks me that it's nearly completely proprietary Q_Q -
ruby Gosu -- A Ruby Game Development Library
kellessdee replied to kellessdee's topic in Programming & Web Development
@Luz: Thanks again for your comments. I firmly believe knowledge should be free, and was meant to be shared. I think competition is important, and brings out our true potential, but trying to capitalize on the knowledge is just plain wrong. Everyone has to start out somewhere, so I like to pass on what I can. I'm glad you see some potential in me, hopefully you're correct :D @rage: I think if you plan to learn ruby (which IMO is a very versatile and FUN language, well more fun than most :D), and wish to get into game development, Gosu is a compact library (so less classes to learn), but follows a similar pattern/concept to popular multimedia libraries (such as SDL or OpenGL (for graphics), in fact you can even make calls to the OpenGL library), so would be a pretty good intro to such concepts. Also, I think it would be awesome if we could get a project like that going. -
Actually I had this issue, I believe if you hover the mouse over the icon on the task bar (so that little box with the thumbnail of the window appears), then right click the thumbnail and select "Maximize" That worked for me any ways.