Jump to content
  • Advertisement

Tom Rijnbeek

  • Content Count

  • Joined

  • Last visited

Community Reputation

134 Neutral

About Tom Rijnbeek

  • Rank

Personal Information

  1. Tom Rijnbeek

    Random smooth movement

    Yeah, the article seems to approach it in the same way. I am definitely going to spend some time reading that and see if it works in my own environment.
  2. Tom Rijnbeek

    Adding item modifiers

    I would create a proxy for your properties. So basically you create a ModifiableInt class (or if you are fancy: Modifiable<int>) which you can apply modifiers too.   The way our game works is that we encapsulated the properties into a properties class. So your weapon would for example get a WeaponProperties child which contains all the parameters of the weapon that can be changed. Then you create an IModifier interface that knows what to do with these properties. So an example structure would be: interface IModifier { void Apply(WeaponProperties properties); void Remove(WeaponProperties properties); } The weapon could then get a method that calls the apply method on the modifier on its properties.   In the end, it still comes down to using a class like you described. Using the Modifier class you posted you could generate the Apply method easily and use this approach.
  3. I dual boot on my Macbook Pro between:   Windows 8.1; Visual Studio 2012 + Resharper; Sublime Text 3 OSX 10.10 Yosemite; Xamarin Studio; Sublime Text 3   I also have some test setups for my game on my tower:   Windows 8.1; Visual Studio 2013 + Resharper; Sublime Text 3 Ubuntu 14.04 LTS; Monodevelop
  4. Right now I am working on some movement behaviour for some of the enemies in our game. The goal is that the enemies move in a smooth fashion within a certain rectangle. That is: the enemy always moves in curves, without suddenly moving in a different direction (in mathematical terms: the movement function should be differentiable).   My current solution is entirely based on quadratic Bezier curves: I start with a Bezier curve between P0, P1, and P2. Once the enemy gets close enough to the end of the curve, I select a random new point P3 and create a new Bezier curve between P1, P2, and P3. Because the curves do not necessarily intersect, I interpolate between the positions on the two Bezier curves for about a second.   While this is very close to what I want to achieve, it still doesn't look as good as I hoped for. The rectangle in which the enemies can move is very wide, but not very high. This means the enemy makes a lot of almost-180 degrees turns, which doesn't look very good.   Another issue I ran into is that enemies can be pulled or pushed by certain forces in our game. Furthermore, due to some limitations of our system, I can only determine the acceleration of the enemy every frame. Right now it internally uses a point on the curve where I want the enemy to be, and then calculates the acceleration to get there.   Trying to improve the quality of the movement, I have tried a lot of tricks, but none really seem to work. I have the feeling my approach in general might not be optimal, so I am curious as to how people in general generate random smooth movement in a bounded continuous space.
  5. Tom Rijnbeek

    XML vs Database

    Our game does not work with cards, but we do have weapons, enemies, etc. We read all the data from JSON files. In my opinion, JSON files have a nicer and more readable syntax than XML, and the conversion is really simple as well. I would recommend using a similar system. JSON is actually a Javascript format, so I assume it should be fairly easy to interpret in Javascript. I personally also think using a separate file per card would be the nicest way of doing it, and just use I/O code to loop through all files in a directory.   If you write an interepreter, you can probably parse the XML/JSON files into an object. I am not aware of the limits of Javascript, but you could use a form of reflection to map the attributes from JSON to a class directly. This is an example in C#. The JSON file for a sound effect could look like this: { "file": "ogg/clang.ogg", "volume": 0.8, "minPitch": 0.9, "maxPitch": 1.1 } Using a library, we automatically parse this to the following class: sealed class SoundFileJsonRepresentation { public string File = null; public float Volume = 1.0f; public float MinPitch = 1.0f; public float MaxPitch = 1.0f; } An argument for using a database would be that it is optimised for indexing and searching for cards, so if you wish to store decks that point to card IDs, databases would be better for that. If you load the cards manually, you might have to write your own datastructures to deal with this.
  6. I am a huge fan of narrative games. I have played several games that have made a permanent impression on me, for example To The Moon and Brothers: A Tale of Two Sons. Especially the latter has kept me wondering how it is possible that a game can create such a bond with the player that makes you feel strong emotions, and keeps you thinking for long after finishing the game. Because of my curiosity, I decided to put some research into these narrative games. The thing that got me the most interested, was the way Brothers: A Tale of Two Sons integrated the story into the game mechanics, and I decided to find out if the story would lose its power if I removed all the gameplay from the story. If you haven't played Brothers: A Tale of Two Sons yourself, you can watch a movie adaptation of the story I have made of it right here. If you have played the game or watched the movie, please also fill in a quick questionnaire about how you experienced the game or the movie I made, so I can compare these experiences. You can find the questionnaires and more information about my project on this special webpage: http://tomrijnbeek.nl/smallproject.
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net 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!