Friday, 22 May 2015

O2M - Progress

Hi guys and gals, I've got an update for my latest project, O2M.

If you're not familiar, take a look at my previous post to get yourself up to speed. In short, it's a social network where every user has their own server which communicates with their friends' servers on their behalf. This way, your data stays on your computer until your friends ask for it. Of course, once they've received it, they can do what they like with it. So the caveat is that you should trust your friends (or only befriend those whom you trust!)

The latest release is version 0.2.0, which added the bare bones necessary for adding someone as a friend and notifications. These features really need improving but it works so long as you know the IP address of your friend's server.  Click here for new o2m releases.

I've been working this week to make it easier for developers to install O2M and this means I'm getting closer to generating an ".msi" for Windows computers and a ".app" for Macs. These are not yet possible, but they soon will be.

Usage Instructions 

If you're aware of how to install python packages, then take a look at the releases at the link above and run "python setup.py install". Then follow that with "python o2m/run_o2m.py". Finally open a browser and go to the link displayed in your terminal window with the added default port number 8000 appended to the end with a colon. An example would be "http://192.168.0.2:8000/o2m/timeline".

From there you will be asked to sign in. The default credentials are "user" and "password". For now, after login you are prompted to change just the username. Pick any name (preferably yours) and hit return. Finally, log in again and make your first post.

Upcoming Features

So I've been working late into the night to achieve caching on the content that gets sent between people's servers. This is incredibly important because with O2M's architecture, there is inherently a lot of networking. This is the price paid for a distributed social network. However, by using caching, we can reduce the number of requests for content to one request per edit per content. So the bare minimum of requests are done in order to acquire the most up-to-date pieces of content.

What's more is that I've implemented images such that they too can be downloaded from a friend's server. For now, they still cannot be uploaded to you're own server (but of course normally you would just put the image in a special folder). Once this is complete, users will be able to select their profile picture, but for now, I have programmed in a default "use the first content created on the server". So "Content no. 1" is used as my profile picture, and this is the result:

Sunday, 29 March 2015

O2M - The Distributed Social Network

For a brief introduction of this project that I'm working on, please see the README file on my Github page (https://github.com/lukebarnard1/o2m).

This year, I decided to make something that I've been thinking about for a while: a social network that really is a network of friends, each with their own computers capable of serving information out to the world. The concept is quite simple, your data stays on your computer and is sent to your friends on demand.

Instead of being 'friends' with someone, you must actually register your friendship with them. At the moment, there isn't a friend-adding mechanism (https://github.com/lukebarnard1/o2m/issues/2) but you could imagine that I would send my digital contact details to someone I'd like to be friends with. Once they have those details, they may decide to send me back there details, at which point I could allow them access to my posts.

Once friends with someone, you can write content as always in a web browser connected to your own web server. Half of your own web server serves a website for editing content, adding friends and changing your details. The other half is responsible for exposing your content in a JSON format for you AND your friends. This allows your friends to leave links to their content on your server. So long as you're the original poster, the links will stay on your machine.

The beauty of this kind of architecture means that you don't have to be at your server to make changes to it. You have your own user credentials on your server - just like all of your friends. The difference is that you have more permissions. The main power that the owner possesses is the power to add content to the server. So in short, you could login from anywhere in the world, just as today's social networks. But your data is still on your computer, ready to be sent out to anyone you authorise.

Connections will be secured, as always, using HTTPS. And there will be no centralised server working hard to connect everyone together, but instead the computers of the network itself will be doing the hard work.

The code is available from my Github page but it's currently in it's infancy, and I need help. Feel free to contribute if you can by making pull requests to close the many issues that are present. Many of which are actually basic features. There is no documentation for the code at the moment however, but I will make this within the next month or so. I will also take some time to refactor and clean things up, making it even easier for collaborators to help out.

Cheers,
-Luke

Monday, 16 September 2013

New Game: Sand Lab

Hello there, those who are interested in my game creating experiments! I have not blogged since before Easter because revision took priority and I soon forgot about Java (Antidote, top down zombie shooter no. 1) and moved onto a graphical game creation tool called GameMaker. If you're thinking about making a game but don't want (or need!) the complexities of programming, this is a good one to try. It does come with it's own programming language for doing anything you like within the game sandbox. I, for one, used the language to cast shadows on the map as you run away from body-less zombies! The result was Zombuild.

However, the game that I'm really excited about making at the moment is "Sand Lab". This game will involve a very interesting way to play with tiny particles that fall down and behave generally like sand or liquid or gas or fire or any other similar material. This has been done before, but what hasn't been done is to use one of these types of sand as a currency. The currency sand, say gold, will be a reference point and the value of any other sand type is calculated using the amount of gold currently in the bank. The bank is a bank of sand (or a sandbank if you will) that simply contains an amount for every sand type. There won't be much gold, say 1000 pixels worth, so it is very valuable when compared to sand types like water or sand, which probably make up most of the bank's contents.
Sodium reacting with hydrochloric acid to form hydrogen and salt.
Now it wouldn't be very interesting if the different types of sand just spread themselves about the lab into a pile and stayed there for all eternity. Certain sand types react with one-another. This is the key feature of my game. It enables you, the player, to react sodium with hydrochloric acid to form salt and hydrogen. You can then potentially sell the salt and the hydrogen for a higher price, giving you that all-important profit. Other reactions will yield higher profits but they may also have higher costs. Selling couldn't be easier: you simply pour the sand to be sold out the bottom of the screen and your bank balance is adjusted according to the current price of that sand.
The bunsen burner!
The objective is simple: get as much money as you can in order to buy more useful sand types such as oil and plutonium and tools that might include a heater, cooler or input types. The heater tool would simply provide lots of heat for those reactions that need it (for example hydrogen doesn't react with oxygen at room temperature.) The cooler would condense anything to a cooler state on contact. Steam would condense into water and it might even freeze. The input types are an idea at the moment just like the cooler. They would just act as a place where pixels are spawned for use in reactions.

On the left, you can see what happens when you super heat wood so that it reacts with the oxygen in the air to form carbon dioxide and smoke. Understand that not all the elements are real. Oil is not an element and neither are wood, leaves, sand and air for that matter.

At the moment, I'm trying to advance the game play from a tutorial-like form of play to the user owning several factories which can be switched to by pressing the arrow keys or something similar. In each factory, users will hope to achieve a factory set-up where inputs give the reactants, the reactants react to produce more valuable sand types and then they fall out of the bottom (or possibly float out of the top) of the window. Each factory will eventually have a indication of profit per hour or minute. When the player closes the program and plays the game later, the profit will be extrapolated over time so that they earn without having to play the game. All they have to do is to make sure they always have enough money to supply the factories.


So here it is, my next game creation adventure. I hope you enjoyed this post, be sure to check back later for more. At the moment, the game is only available for Mac OS X and can be found at my website lukebarnard.co.uk

Thanks for reading!

Thursday, 21 February 2013

Antidote 0.2 - Maps + Ammo

Hello everybody, it's been a long time since I last made an appearance. I thought, in light of the recent efforts of the crew behind Minecraft (Mojang) raising charity for money by programming, that I would program my game too! So whilst they're making a game in which you must defend your flying pizza through space, I'll be making a couple(?) of update(s).

So, onto Antidote version 0.2. I spent last night making the last changes and now I'm happy that you can have a go too. This update includes:

  • Maps
    • Walls
    • Barricades
    • Zombie spawners
  • Proper ammo and reloading (finally)
    • Remaining ammo in the gun displayed
    • Ammo picked up also displayed
    • Reloading sound
    • Out of ammo sound (that's right, it's not infinite anymore)
  • Temporary removal of squads because they're rubbish
    • "Sometimes you have to backwards to go forwards" - Luke Barnard 2013


Video: http://youtu.be/70BKwN1sL4s

Instructions:
  • Movement: WASD = up down left right
  • Shooting: aim with mouse, hold left mouse button to fire
  • Reloading: space
  • Antidotes: right click at a zombie to turn them into a human. Requires antidotes!


Friday, 1 February 2013

Antidote0.1 Download

Hello again, I've uploaded downloadable versions of the game for anyone who wants to test them out.

Antidote Update No.4 - Squads

Hello all! This update features a new font for the game as well as a heads-up-display or HUD to show the score, the number of remaining antidotes and the multiplier for the score.

The main new feature is squads! You can now press the Enter key to call for help. When you do, the surrounding humans will circle you wherever you go. I find that about 3 or 4 is a suitable size because they can get in the way of you getting a good score but there is no limit (so long as you can get yourself in the middle of them all).

When you shoot a zombie, you score a number of points equal to the number of health points you hit off a zombie. One bullet (currently) scores 5 health points of damage on the zombie. Each zombie has 100 health points, so killing a zombie on your own gets you 100 points but getting a multiplier on your own is very difficult.

Also, when you are turned into a zombie, you must collect an antidote to turn back into a human. So there still isn't a way to lose... I'm still working on that.

Here's a game-play video to wrap things up. If you can, please "like and subscribe" me on YouTube on my video here. If not, here's the video anyway:

Thanks everyone for reading and watching, see you next time.
-Luke.

Monday, 28 January 2013

Game Update No.3 - Antidote

Big changes this time everyone. The game is really moving fast and ideas are being thrown at me from all angles. Here's a change list:

  • Health bars for all characters.
  • Antidotes that can be collected from the ground and used when close to zombies to turn them back into humans.
  • More zombies spawn when there are more humans present.
  • Each zombie killed by you (not other humans) gives you a score and if you kill multiple zombies within a small amount of time, the score you gain multiplies. You can see your score in the top left of the screen.
  • The screen shakes when you shoot.
  • Sounds are played when a character is hit or when a gun is fired.
  • The game will now be called "Antidote"
I think that's all the changes. If you have any bright ideas, please tell me because limited antidotes and the screen shaking were both partly thought of by my friends! Here is a video to give you a much more visual idea of what the game is like currently:


The sound seems to be a bit glitchy at the moment, with random glitchy sounds appearing now and then so I will work on that. Thank you everyone for reading/watching, please use the icons below this post to share my blog on Facebook and Twitter.
-Luke