Archive for the 'Coding' Category

New looks!

I’ve just updated the website’s looks! 😀 I’m trying to update this site and the new header and background is the first step in that direction. I also wrote the first version of a dedicated page for my real time ray tracer project “Rateracer”, see the link at the header, and improved the sidebar.

I’m hoping this site will slowly become up to date in the following weeks as I make up for lost time. xD

Advertisements

HttpURLConnection getInputStream FileNotFoundException

Hello Android/Java coders!

So I recently got some weird errors when doing http requests in my Android game Hamster Climb. I was trying to get the input stream from a HttpURLConnection but kept getting a FileNotFoundException even tho the URL worked perfectly in my desktop browser. Here’s an example, without error catching stuff, of how the code could look like:

String user = getUser();
String url = "http://somesite.com/page?user=" + user;
URL u = new URL(url);

HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setDoInput(true);
c.setDoOutput(true);
c.connect();

InputStream is = c.getInputStream();

The problem was that at the last line the call to getInputStream generated a FileNotFoundException. I printed the URL that was used and tried it in the browser. Worked prefectly.

I managed to solve it tho. The problem was that even tho creating a URL object with the built url string works, the url might be broken. For example, if user is “Some guy” the url will contain a space which is not valid. Browsers solve this by automatically replacing the space with %20 which is what my browser did.

To solve this in code you use the URLEncoder class’ static method encode. This method takes a string and encodes it to a string that is ok to put in a URL. So replacing

String url = "http://somesite.com/page?user=" + user;

with

String url = "http://somesite.com/page?user="
+ URLEncoder.encode(user, "UTF-8");

solves the problem when user contains illegal URL characters.

Hope this helps someone out there getting weird errors. 🙂

Game making

This is a weird post on a blog I really haven’t updated much since I created it. The post is mostly to kind of silently announce to the world I exist and like programming. Also partly to rub it in the face of the mmo nay sayers that even noobs can learn and have fun and maybe actually succeed creating their very own mmos.

I’m really interested in coding. Really. I always thought it was cool to be able to code when I was a kid and really wanted to learn. I started with some hello worlds and random fooling around with code, not really knowing nothing. I started to learn some more but I didn’t really have anything to code. I needed something more specific, something to learn programming while doing. So I got into programming games. It started with python and pygame. GREAT tools, especially for beginners since it’s so simple and comes with zero hassle. 🙂

I coded some stuff. One actually kind of complete game, heh, in which a ball spawns at the center of the screen and you have to catch it before it reaches the edge of the window. When you do or it does score points are increased/decreased and the ball respawns in the middle of the screen. This goes on for 30 seconds. Was pretty fun actually. 🙂

Anyways, I always liked mmos… Mostly for the fun of multiplayer gaming with my friends. But also the design of the whole thing. Anything from client-server interaction to combat mechanics. So I started, trying to atleast, code something of the sort. I did it in python/pygame ofc, that’s what I knew. I learned networking, more about game making, protocols, message handling etc. The code sucked. xD I rewrote everything over and over. I even started on other things such as my own graphics engines, both in python and c++. I’m not really that experience tho, and creating my OWN engine for anything but fun is just crazy. A graphics engine by itself takes years to make for a TEAM of EXPERIENCED coders. I just wanted to create games and I ran out of fun. xD

Back to the mmo stuff I went. I had some fun with python/pygame doing stuff, mostly learning about game making. Threw away the code over and over heh. Finally, I got tired of 2D graphics and wanted 3D instead. I found Panda3D, a open source graphics engine created by Disney. It’s written in C++ but meant to be used from python. PERFECT. 🙂 I played around with it and found it really easy to use. There’s even an exporter for Blender. 🙂

Now my mmo efforts are concentrated on a python server and python/Panda3D client. It’s actually working out quite well this time around. Mostly because I’m A LOT more experienced now. Before this I had never used databases. Had to learn, it’s the thing you know. For the server I’m using sqlite which is a simple no server, one file database library that’s actually included with the standard python release, how convenient. 🙂 I read up on how to handle entities, objects in the game world, and found something called entity systems. Wonderful thing. Got me thinking on how to use the database to it’s potential.

Anyway. Now I have a server written in python, using an sqlite database and communicating with the clients over TCP. The server supports handling connections, logins, the clients entering the world, chat messages, client movement. It also handles “static” or “cacheable” entities such as trees, stones, road signs and the like. These are later meant to be cached client-side by the means of regular server updates. This means they can still be just as dynamic as any other entity in the game world. All entities are equals pretty much. Some are just expected to be more static than others and therefore cacheable. The server also support zones and there are currently two of them. 🙂 One ice and one grassy with trees, stones and road signs. There’s also a magic stone in the ice zone I want to teleport you to the grass zone, more on that later.

The client can connect to the server, be used to login, create characters, enter the world, walk around in 3D on  a height map and see the entities around like trees, stones, other characters. You can send chat messages that get’s picked up by other players if they can see you and also see others messages. I think this is a good start but I’m mostly concentrating on the server at this moment, that code is most importantly CLEANER heh. xD

I have no delusions tho. This game wont ever be the M in Mmo. At this stage I think it might some day support combat. 😉 That’s the level of expectations I have. But that’s what’s fun and make this possible. I just look at the next thing. Currently it is, as always, cleaning up the code and all but other than that, an actual new thing/feature, is adding support for scripting things. I want scripting now because I want to implement a teleporter stone between the zones and thought it might be nicely done using some kind of more generic scriping. In python of course. 🙂

Just an update from big bang to now. 🙂 Cya, when my new ocarina arrives I’ll post more on that. 😀


I am a technology interested programmer. I live and work in Uppsala, Sweden after moving here to study Engineering Physics at Uppsala University.

❤️ cats