Crook - the evolution of an idea


#1

About 25 years ago, I was in middle school and my friends and I were big into NES gaming and pen and paper games. We used to “design” games, Crook was one of them.

Fast forward to about 2 years ago, I struck off on my own. One project I resurrected was the idea of making games, and remembered Crook. I started looking into game engines and looked at Unreal Engine. I was very impressed by that technology and started work on it. UE is easy to use, but I quickly ran into networking issues and couldn’t get more than one person connected to my game. Since Crook is multiplayer, that was sort of necessary. I shelved that idea, but I had designed a lot of the functionality.

About two weeks ago, a friend approached me about doing a simple mobile application. Since many of my projects had been mobile, I advised him and did a little research for him. As I did some research, the idea of doing Crook as a 2D mobile app popped into my head. I thought about it over lunch one day and went, “Huh, that’d be easy to do, but I’d need a good platform to do it on.” I spent another half hour researching game platforms for things like cordova and nativescript, but really didn’t see anything I liked. Then I found Defold. I had never done Lua scripting at all, but it was just like working with a myriad of the other languages I’ve been exposed to and took to it like a duck to water. After learning how Defold functions as a platform, All my pieces are coming together. I am really pleased that Defold compiles and runs on the platforms it says it does without jumping through hoops.

After two weeks of work, probably about 30 hours total, I’m almost ready to alpha the main functionality of the software, but it will only be about half done. Still, in that time I’ve done:

  1. Learned defold and how to do things in it.
  2. Created dynamic loading of tile maps
  3. Interfaced with my webapi securely.
  4. Integrated logins, account creation, and character creation.
  5. Implemented about half of the features used to interact with objects in my game.

At this rate, I should be able to have the alpha done before december, and a beta before Christmas, provided I can create content for it quickly.

Thanks for the excellent Defold project, I’ll update as things go further.


#2

I’m happy to hear that you’ve taken Defold to heart and that you are progressing nicely! Could you tell us a bit more about the game your are doing? Maybe share a screenshot?


#3

Nice story!! Can we see the game?!


#4

I will provide screen shots when I have something better to show than the temporary stuff I threw up for development. I’m working on getting through all of the main bits of functionality.

Here’s the elevator pitch for Crook:

You’re a crook, but you’re starting out small time. You roam through the city picking pockets, robbing vending machines, and searching for loot in hidden areas. Eventually you gain the skills and equipment to do bigger jobs - robbing banks, breaking into homes, or doing jobs for local mob bosses. Your goal is to run your own crime empire some day, but for now you’ll have to lift that fat wallet off that unsuspecting tourist.

Crook will be a multiplayer 2D tile based game. There’s loot everywhere, you just have to find it. You can interact with a lot of objects in the game, NPC’s and other players in the game. You can pick locks, search for loot, hide stuff, lock, trap and alarm items. On PC’s you’ll be able to pick their pockets, but if you fail, NPCs may fight you and PCs have the option to. As you steal more stuff, the cops will start paying attention to you. Once your infamy with the world increases, the cops will try to arrest you. Other PCs also have the ability to fight you.

Combat with other PCs or npcs/police will be handled in a turn-based Final Fantasy style fight. If you lose a fight, you’ll lose some of your stuff. If you lose to the police (get arrested), then you’ll lose stuff in accordance to the infamy you have. Every time you lose, you’ll get sent to a random hospital.

The world will be made up of individual maps that you can move through. There will be the ability to use taxi’s or the subway to quickly move about the city (for a fee of course.) You will also have the ability to purchase real-estate to hide and protect your loot, be warned, however, as others can get in there and try to steal your stuff.

Eventually, you’ll be able to join or form a crime syndicate. Through these syndicates you’ll gain special elements such as discounted shop keepers, a syndicate safe house, and access to protection. But this comes at a cost of a percentage of your loot.

So there’s the description. I hope this piques people’s interest and I’ll have some screen shots when I have something worthy to show off.


#5

Sound really cool! (and ambitious!) It sounds a bit like Retro City Rampage. Good luck and keep us posted!


#6

That game looks neat, and Crook is along similar lines, but has a different focus.

It is ambitious, but I have a solid design and I believe I have all of the necessary tech and processes planned out. However I could be completely off base, only time will tell.

The biggest issue I see is when PC’s are fighting PC’s, doing the interactions may be a little clunky on the back end. I’m debating on using websockets, or polling the api. I’d prefer the former, but the latter I already know I can do. I’ve not done anything with websockets yet, nor do I know if Lua/Defold can support that. But I’ll cross that bridge when I get there. With a tank battalion.


#7

You can borrow one of my tanks: https://github.com/britzl/defnet/tree/master/defnet/websocket


#8

An update on my progress. I’m close to my first alpha of this, and have proven my technology concept behind the scenes, which I am quite excited about. The first alpha will have the ability to move around the city, into buildings and look for loot in items and NPCs. You can also hide loot in world items, along with setting traps, locks, and alarms on things. The UI screen for hiding stuff got pretty complex, but it works. I’d like to dive into the dirtylarry stuff and figure out how that worked to make my life much easier.

I have a few other small items to attend to before I can do screen shots, but this is exciting.


#9

Yay! I’m happy to hear that your project is moving along nicely! Looking forward to screenshots or something playable!


#10

Gee, it’s been almost a year, but I’ve picked this back up again. Life got in the way, but I’m inspired by my success with Super Math Challenge. I was able to power through the bug in my game that made me stop in the first place, and I’m getting more stuff done.

We’ll see how it continues.


#11

“The last reply to this topic was 9 months ago.” Isn’t that the truth.

I actually made significant progress on this since then. I converted the back end to use colyesus, which took me a while to wrap my head around but it clicked when I realized that I could have each map be a room in colyesus. I was too deep in the technical details to see this, but I walked away and came back and got it. I got authentication working great, and converted all the existing server calls to use the colyesus websockets.

I found a tileset that I like and built a few test maps. They look great.

I was able to get map travel “working” last night - working in that the client switches colyseus rooms, the map data loads and is displayed in the screen. I have to create the ability to switch tilesets and put the character on the correct tile.

I’m using Tiled to create the maps. I’m loving the fact you can put custom attributes on everything in the editor. I’m going to come up with a process of being able to build out a full map complete with searchable objects with contents, refresh parameters, etc. I have to build a map parser to handle this data on the back end, but then it would mean adding content to my game is as simple as posting json to a webservice (that only I have access to.)

So yeah, it’s coming along, slowly but surely.

Oh, some screens of the test maps - one exterior and one interior:


#12

Looks sweet! Keep us posted!


#13

Looks cool! I have been playng Lara Croft Go recently which is cheap on the app store. It’s got a cool turn based stealth thing going on. Good luck with your project


#14

I spent a few days working on Crook now and have a few very interesting things to report. The first and not terribly exciting part is I was able to implement map travel - that is you switch from one map to the other (in this case the overworld to interior map). While that might not seem hard, it’s the way I’m handling maps that makes it difficult. I’ve tested out all my interactions in the game, and implemented real animation of the main character. It actually looks like a real game now!

The interesting thing is the architecture I built for the server side and how to handle maps. I don’t store the maps in the game itself, the map definitions are stored in the server. This will allow me some wonderful flexibility and creates the possibility of an (almost) open world. This means I can add new map areas into the game without pushing an app update, and it allows me to keep the final app relatively small.

So I’m pretty stoked that things are working well. Too bad I have to do day job stuff for a while now.


#15

:astonished:This looks very veery nice!! Keep the nice work up…


#16

It’s hard to put things down when you’re making progress and having fun. I was able to get NPCs implemented to a point. They show up on the screen and wander around, and you can interact with them. I have to fully flesh out the current interactions.

I have discovered an off-by-one error that only manifests itself when you first spawn into a map. If you tap on an object when you first spawn, it will detect the tile you tap on as one off. If you move first the detection is correct. I’ll get it.

But it really looks like an actual game now. Kind of fun. Besides the rest of the object interactions, I have shopkeepers to implement, the GUI to clean up (I’m using ugly placeholders), and then It’ll be ready to rock an alpha. I’m excited to see how the multiplayer stuff works out.


#17

Gave the UI a refresh, so it doesn’t look like lumpy mashed potato quality. Here’s the login screen.