FIFE forums

Please login or register.

Login with username, password and session length
Advanced search  

News:

FIFE 0.4.0 has been released on 15th of January, 2017!

Author Topic: Is it possible to make a game with no loading ingame (continuous world)?  (Read 5085 times)

Wolney

  • Newbie
  • Posts: 7
    • View Profile

Hello, I´ve just decided to start a project of developing an RPG game with a friend, and I need to know if FIFE can handle what I´m expecting to do. The problem is the game will be isometric, and will have a very large word, and a very large variety of objects to interact with, with various functions (move around, combine, use) that carry a lot of information. The game will have a large number of NPCs too. The graphics are simple, and the characters rather small, but with some detail.

I need to know if it´s possible to make the game so that there are no loading screens ingame (when the character walks around the world, enters a house or a dungeon, there will be no loading, it will be continuous, the game will not be divided in rooms).

For that, the game needs to load only the surroundings of the character, and the rest would remain in the background. Example: The player character and an NPC (that is at a great distance from the character) are travelling to the same location. While the character is on his way, so is the NPC (controlled by AI, that we will program). Is this possible? In FIFE, how do I program NPC schedules on different parts of the game world, and leave them running in the background, without overloading the game?

Thank you for your help.
Wolney.
Logged

chewie

  • Developer
  • Full Member
  • *
  • Posts: 123
    • View Profile
    • zero-projekt.net

Moin Wolney :)

ATM this is not possible out of the box (seamless worlds / maps). But we have lazy loading for animations in place - maybe a C++ programmer could extend this to the map loading as well.

About the AI-thingy: This is totally up to you on how you implement it on client side (e.g. by using python). I don't know of any bounds of the coordinate space* - but I guess there is one hiding somewhere ^^ So at the end you have to limit your world. But moving npcs which are not rendered by the camera is possible already.

Just an idea - you can add any instance on runtime - so you should be able to build your world while the player is scrolling by using the python bindings. (or any other scripting language swig** let you choose). You just need to do some research to figure out how to collect the data without consuming too much frames. (Of course this is only interesting for prototyping - on the long run most of this code should be ported to c++)

* FIFE uses a 3D coordinate system - an overview can be found here
** FIFE uses swig to generate python bindings - this can be used to script FIFE by other supported languages too (e.g. LUA). more informations about swig -> wikipedia:swig )

cheers,
chewie
« Last Edit: June 19, 2009, 03:57:40 pm by chewie »
Logged

Wolney

  • Newbie
  • Posts: 7
    • View Profile

Thaks for the response, Chewie. I´ll do some research and try to think of something.

I did not know that FIFE uses a 3D coordinate system. I took a look at the link, but I´m not sure I understand. Is it possible to change the camera position (like pan 360 around a house)? I thought objects were 2D.

tks again,
Wolney.
« Last Edit: June 22, 2009, 05:18:55 pm by Wolney »
Logged

chewie

  • Developer
  • Full Member
  • *
  • Posts: 123
    • View Profile
    • zero-projekt.net

I did not know that FIFE uses a 3D coordinate system. I took a look at the link, but I´m not sure I understand. Is it possible to change the camera position (like pan 360 around a house)? I thought objects were 2D.

Moin :)

In theory - this is possible. The 3D coordinate space allows to change the rotation and tilt of the camera on runtime. But this is only true for the camera. If you want to pan 360° around a house, you have to provide a 2D image for every angle (means if you have 1° steps, you have to provide 360 (slightly) different 2D images of your house). Because of this, FIFE is also called a 2.5D engine ^^. Just as an addition, the application would be as follows:

  • Define your object.xml for your house
  • Provide one image per degree step within this xml file
  • Write a rotate_world() method in your client and rotate the cam with your degree step
  • Sit back and relax - FIFE will automaticly choose the proper image for the current rotation (this is true for all objects on the map - so basically the visual effect is that the whole map is rotated)

Seemless rotation is not a real option, as you have to provide many additional content. But you can provide fixed rotation steps like 90°. Unknown horizons is using this feature to provide 4 different views on your settlement / world.

Possible enhancements could also allow to let FIFE render 3D objects instead of 2D images - but there is no plan to implement that from FIFE dev side yet. But the 3D coordinate space would allow such an implementation without rewriting the whole core.

Wolney

  • Newbie
  • Posts: 7
    • View Profile

Excellent. I think FIFE may be the engine we were looking for. We just have to find some time to study it. If we manage to implement the seamless map thing, it would be the dream engine.

I´ll post again, as soon as we make any progress.

Thanks,
Wolney.
Logged

vtchill

  • Developer
  • Full Member
  • *
  • Posts: 206
    • View Profile

When you say continuous are you talking about open worlds.. such as the GTA series?

If you are talking about GTA style open world.. this is not something that is easy to accomplish and it requires a pretty interesting streaming implementation where the world is broken up into sectors and depending on where the player is in the current sector the adjacent ones will need to be loaded in the background to provide the seamless feel. This also has implications on how to game is designed (and maps are designed) and it needs to be thought out from the beginning to avoid situations where the player movement causes hiccups in the game because of too much content loading/unloading.

BTW, chewie I like the idea of rendering 3D objects, but i think it would quite a bit of work for the current renderer and object implementation.
Logged

Wolney

  • Newbie
  • Posts: 7
    • View Profile

Hello.

Yes, that is what I mean with continuous. Loading parts of the map, surrounding the character, with things happening in the background. I don´know what streaming is yet, hehhe, I´ll take a look in the future. I´m not the programmer, the other person who is working with me is, though. I´ll learn some programming with him.

I am worried exactly with what you said about the "hiccups" with loading, and if FIFE is flexible enough to support this change in engine, or if we´d have to build an engine from scratch.

The object rendering that Chewie described is not possible yet? (an object is viewable from several differente angles).

Thaks for the help ppl.
Logged

vtchill

  • Developer
  • Full Member
  • *
  • Posts: 206
    • View Profile

When I say hiccups i mean things like a game character is on the corner of lets say 4 different sectors that need to be loaded just in case the player steps into the bounds of any of those 4 sectors. Without a very efficient streaming data implementation you will probably see a slight pause or hiccup in game play. Usually to avoid these types of situations level designers will put it arbitrary blockers so the player can't possibly get into a situation where a lot of sectors have to be loaded at once and this prevents the problem. It is a tough genre of game to create and requires a lot of thought about level design and game mechanics to get it just right.

The current implementation in fife does not handle the streaming case and preloads a level up front. There is no notion of a level sector to load on demand. By default the built in map format is XML which is fairly verbose and not geared well to streaming (think binary here). Although you can design your own map format for better streaming capability and thus would need to write your own map loader.

The rendering chewie mentioned is not currently supported in fife. We currently do not support loading 3d objects, this means all the graphics are essentially 2d sprites and a new sprite will have to be loaded for each angle (view) you would like to support. In the simplest case you could just provide a single isometric view and then you would only need a single sprite for each graphic object in the game.
Logged

Wolney

  • Newbie
  • Posts: 7
    • View Profile

Usually to avoid these types of situations level designers will put it arbitrary blockers so the player can't possibly get into a situation where a lot of sectors have to be loaded at once and this prevents the problem.

I´d really like to avoid doing this (adding blockers).

(think binary here).

Sorry, I don´t know what you mean, hehhe.

Although you can design your own map format for better streaming capability and thus would need to write your own map loader.

So, do you think its worth using FIFE and re-writing the whole map loader, or just starting a new engine?

Tks very mucho.
Logged

vtchill

  • Developer
  • Full Member
  • *
  • Posts: 206
    • View Profile

I think personally open world is probably the next toughest game to implement besides an MMO. You need to have a team of people that really understand the problems that can arise and how to solve them. My personal opinion would be to start on a project that is a little easier to handle and something that has a better chance of getting finished. I am not sure of your team, but most projects are over ambitious and therefore are never finished. Like the old saying goes the idea could be the greatest in the world but no one will even know without a finished product.

As far as the questions about fife, while i think it is technically possible to do what you are saying it would require heavy modifications to the engine as it is today. It is up to you whether you would like to modify the engine, or create your own.
Logged