Author Topic: starting a new rl as my graduation project  (Read 13224 times)

arhpositive

  • Newcomer
  • Posts: 3
  • Karma: +0/-0
    • View Profile
starting a new rl as my graduation project
« on: February 14, 2012, 09:35:16 PM »
Hello everyone. I'm a senior student who's chasing a bachelor's degree in computer science. Recently, I decided to take my graduation project on making a roguelike game, so I came and registered to take some suggestions from you. The project will be year-long, but I have to show some decent progress in the first one or two months.

I know that there are a lot of tutorials around on how to start coding a roguelike, etc, but i have some specific questions.

First off, as a request from my project advisor and teacher, I have to (and want to) code the project with web browser support, therefore I want to base my project on either one of Flash (AS3), Unity or HTML5/WebGL. (As a side note, I have little information and experience on these platforms, but that's ok as I will have plenty of time.)

So far, there are not many roguelikes that are based on these technologies afaik. I can count Pitman from last year's 7DRL and also Dance of Death (unity and AS3 respectively).

Can you point out any limitations of coding a RL as a browser application instead of a desktop application? Is there any way I can use libraries such as libtcod for these platforms? I know there's a C# version of libtcod but I don't know if I can use it in Unity, haven't researched it yet. I'm hoping you can help me on this one.

The setting of the roguelike, the rules, gameplay and everything else is not decided yet, as I'm in the first day of planning right now. I think I'm leaning towards a classic roguelike, but you'll never know. This will be my first roguelike and I know it's not an easy job, so I'll try to update you guys on the progress and ask for advice on any problem I encounter.

One thing is for sure, the focus will be on Artificial Intelligence, since the project is not about making a game, it's about coding good Artificial Intelligence. I want to make smart and dumb enemies of all kinds. I'm planning on detailed animal behaviour. Smart and dumb allies are a possibility. I'm yet to discover articles on Roguelike AIs and I'm definitely planning on paying a visit to Smart Kobolds' source. More suggestions are welcome. I need to take as much information as I can get.

I also want to know if I'm being realistic. I have one year, but obviously I'll have other duties (and a social life), so it's not all about this project. Since many of you have more experience than me, I'd appreciate if you can tell me what to and not-to focus on the project in order to succeed.

Thanks in advance for any advice you give. :) I'll always keep you updated on my progress.

george

  • Rogueliker
  • ***
  • Posts: 201
  • Karma: +1/-1
    • View Profile
    • Email
Re: starting a new rl as my graduation project
« Reply #1 on: February 15, 2012, 02:14:09 AM »
Welcome arhpositive, sounds like a fun project. Here are my suggestions:

1. Choose between Unity and HTML5. Flash isn't going anywhere soon but it's on its way out IMO.

2. There are a few ways you could use a library like libtcod. Many languages compile to JS for example.

3. Limitations of a browser application IMO are speed, and platform compatibility. If you're designing for a specific platform you'll have much more knowledge of the platform constraints. If you're designing for the browser you'll have access to many more platforms and at the same time, much less knowledge of all the ways your user experience can go bottom up.

4. Your project is realistic as long as you make steady progress. My advice to you is to build a couple of small games start to finish before you start on your big game. Reserve 1-3 weeks for these smaller games. The upcoming 7DRL in March would be a perfect time for your first one.



Krice

  • (Banned)
  • Rogueliker
  • ***
  • Posts: 2316
  • Karma: +0/-2
    • View Profile
    • Email
Re: starting a new rl as my graduation project
« Reply #2 on: February 15, 2012, 07:48:18 AM »
My advice to you is to build a couple of small games start to finish before you start on your big game.

Yes, if you want to waste your time. Creating a small working roguelike is better idea if you can extend from that to a bigger game which should be the case anyway. The source code design needs to be solid to do that, not the usual fast hacked poo. My suggestion is get everything else (=engine) ready as fast as possible and then concentrate on that AI. Creating a roguelike of any other level than 7DRL in a year is going to be hard, unless you really know what you are doing.

Darren Grey

  • Rogueliker
  • ***
  • Posts: 2027
  • Karma: +0/-0
  • It is pitch black. You are likely to eat someone.
    • View Profile
    • Games of Grey
Re: starting a new rl as my graduation project
« Reply #3 on: February 15, 2012, 11:04:35 AM »
I have to agree on making a small game first, just to get a feel for how mechanics work together on even a basic level.  You'll learn a lot from it and it'll improve future projects to no end.  Don't worry about if the code is sloppy as long as it works.  If you can salvage something from it later then great, but the most important thing is to use it as a learning experience.  It'll also help you figure out if it's something you actually enjoy and want to use.  You might decide in the end that roguelikes aren't well suited for this project and you'd prefer another genre.

Also if you're focusing on AI then don't bother with a classical roguelike - traditional elements like hunger clock and item identification (or even items in general) do not support the AI system, and will only prove a distraction and a time sink.  Also don't spend too much time on things like dungeon generators.  Copy code from others for less relevant parts and make the focus on creating your own AI.  Libtcod is obviously a big help if you can use it.

guest509

  • Guest
Re: starting a new rl as my graduation project
« Reply #4 on: February 15, 2012, 10:30:28 PM »
  If you are looking to pound out a game and not as concerned with refining your skills in a specific language I would recommend the HTML5 version of gamemaker. It's quick and easy to use with a very powerful scripting language similar to Java.

http://www.yoyogames.com/gamemaker/html5

  Just an idea. You can prototype very quickly with it.

arhpositive

  • Newcomer
  • Posts: 3
  • Karma: +0/-0
    • View Profile
Re: starting a new rl as my graduation project
« Reply #5 on: February 16, 2012, 10:37:33 PM »
@Jo: Thanks for the useful website, but I decided on a platform already. :) (see below)
@The rest: Thanks for your suggestions. :) I'm keeping these in mind.

I decided to go with Unity Web Player as my platform. Unity has a bigger community than WebGL and better documentation right now (considering gaming, at least). One of the assistants in school directed me to this website which has perfect tutorials for getting the hang of Unity. Right now, I'm working through the tutorials. The same assistant (along with two more) will start teaching a Unity course in our department in a month, which is very good news.

I aim to get my engine mostly finished in nine weeks or so. The rest of the semester (six weeks including finals), I'll focus on the AI. I want to get a rough draft of the game finished before the end of this semester. You guys are right about stripping down the classical roguelike aspects a bit, and I'll most certainly do so.

In the meantime, I might participate in the 7DRL in March and the Ludum Dare Jam in April, to try to get experience with my engine, but this mostly depends on my midterm and assignment schedule.

I'll keep you updated with my progress, but currently there won't be much, since I'm just trying to get the hang of Unity.

I still want to get suggestions though. What would you want to see in a RL that is browser based and focused on AI?

Thanks for your suggestions and ideas.

UPDATE I - Making progress in Unity tutorials and I've learned many useful things. I'll finish making two example games (unrelated to RLs) this weekend and conclude my training, then start working on the RL.
Still have no clue about a setting for my RL but let's get the engine up and running first.

UPDATE II - Nearly finished my second example game in Unity as I feel I'm ready to start practicing on my roguelike code. Hopefully, by the end of March, I'll have a couple of things finished so I can show something to you.

Participation in 7DRL seems unlikely, but you'll never know.
« Last Edit: March 01, 2012, 11:14:55 PM by arhpositive »

Snargleplax

  • Rogueliker
  • ***
  • Posts: 50
  • Karma: +0/-0
  • snargleplax
    • View Profile
    • SnargleQuest dev log
Re: starting a new rl as my graduation project
« Reply #6 on: March 06, 2012, 10:28:19 PM »
For Roguelike AI, I recommend you check out the "AI" section of the Articles page on RogueBasin.  I recommend in particular Brian Walker's essay, The Incredible Power of Dijkstra Maps.

As for the differences involved with doing a web-based roguelike rather than a traditional desktop application architecture, the main issue I'd expect to come up is object lifecycle management; unless the client is going to hold the entire game state in memory and never deal with save/load, you're going to have some server-side game state that outlives a single request.  To me, this most obviously suggests a database back-end.  You can keep the DB ops pretty simple, but you'll at least need basic persistence and lookup.  Since your queries will likely be pretty basic, you might benefit from the simplicity of a NoSQL database (e.g. Mongo, CouchDB) -- just something to consider.

I've strongly considered putting together a web UI for my own game, since this would certainly aid in adoptability, but the architectural issues involved have dissuaded me thus far.  Not because they're overly daunting (I'm plenty familiar with these architectures from my professional work, in and out of games), but because they'd distract from more fundamental directions of development.  In that sense, it seems unfortunate to me that the effort involved in making your game work as a web app will inevitably take away time you could focus on the AI aspect, leaving your project somewhat less focused than it could be, but I guess it's all a question of what your priorities involve.

corremn

  • Rogueliker
  • ***
  • Posts: 700
  • Karma: +0/-0
  • SewerJack Extraordinaire
    • View Profile
    • Demise RogueLike Games
Re: starting a new rl as my graduation project
« Reply #7 on: March 06, 2012, 11:38:46 PM »
What kind of AI are you looking at?  Finite State Machines are generally done for AIs but I am interested in seeing other kinds. Especially learning concepts combined with some sort of multi-agent adaptability.

Will you have a blog of your progress? Upload UML diagrams etc?  AI in roguelikes has never really been taken very far.

Remember that complex AI behaviour is hard to show in a roguelike, that is, the player usually never notices it. You will have to come up with AI routines that are disparate and "noticeable".  I use lots of "tricky" things in my games but they are only noticed by me because they are usually too subtle.
corremn's Roguelikes. To admit defeat is to blaspheme against the Emperor.  Warhammer 40000 the Roguelike

Snargleplax

  • Rogueliker
  • ***
  • Posts: 50
  • Karma: +0/-0
  • snargleplax
    • View Profile
    • SnargleQuest dev log
Re: starting a new rl as my graduation project
« Reply #8 on: March 07, 2012, 03:01:38 AM »
Right, if you want to work on AI in roguelikes just to work on AI, you might do better by focusing on AI-as-player, rather than just AI-as-Monster.

requerent

  • Rogueliker
  • ***
  • Posts: 355
  • Karma: +0/-0
    • View Profile
Re: starting a new rl as my graduation project
« Reply #9 on: March 07, 2012, 05:21:57 AM »
You could also go with Java and make it a webstart app. Java's suite of data structures would be great support for AI.

arhpositive

  • Newcomer
  • Posts: 3
  • Karma: +0/-0
    • View Profile
Re: starting a new rl as my graduation project
« Reply #10 on: March 07, 2012, 12:20:27 PM »
@Snargleplax
Thanks for the links. :)

In that sense, it seems unfortunate to me that the effort involved in making your game work as a web app will inevitably take away time you could focus on the AI aspect, leaving your project somewhat less focused than it could be, but I guess it's all a question of what your priorities involve.
You're definitely right about this. I haven't decided anything about save/load mechanisms yet, but when I do, I feel like I can use a few of Unity's tricks to make life easier for me. I didn't explore further into the subject, though.

At the beginning of the project, my project advisor acted like "I'm not interested in games so you have to show me something that I might care about.", so I decided to start an AI focused game. Right now, he's acting like "Let's just make a game, we might do something good and other students might follow you to take a game project too.". I'm encouraged by this change of mind. The game will still be AI oriented though, nothing has changed.

@corremn
Thank you for your ideas.

What kind of AI are you looking at?  Finite State Machines are generally done for AIs but I am interested in seeing other kinds. Especially learning concepts combined with some sort of multi-agent adaptability.

Will you have a blog of your progress? Upload UML diagrams etc?  AI in roguelikes has never really been taken very far.

Remember that complex AI behaviour is hard to show in a roguelike, that is, the player usually never notices it.

I'll use FSMs, but I'll try to tackle a few different kinds aswell. It all comes down to the amount of time I can spend on the project.

After the project starts to shape, I'll open a progress blog.

How far I can take the AI, I don't know for sure. I'm new to most of the AI concepts and it'll take some time to learn what I need. I do realize that complex AI behaviour is hard to show. As the game will be oriented on AI, I'll try to shape the gameplay, rules and enemy types to show the enemy behaviour as best as I can. This might lead to a non-traditional roguelike, as opposed to what I was thinking of initially.

You could also go with Java and make it a webstart app. Java's suite of data structures would be great support for AI.
That might be a good fit, but I want to stick with Unity right now as I've already spent about two weeks trying to figure it out.

UPDATE III - Right now I'm working on a school assignment and I won't be able to start working on the project until the 7DRL week. I hope to start shaping up the engine that week.