Achievement Unlocked? (Spintires) ep.2

Door chaozz op dinsdag 22 juli 2014 01:37 - Reacties (14)
Categorie: -, Views: 1.409

Spintires is een geniaal spel, en zeker het checken waard op Steam. In deze Youtube-serie trek ik er met 3 vrienden op uit om door Russische bagger ploegen met verschillende trucks.

In de vorige episode strandden we met de finish in zicht. In episode 2 trekken we er opnieuw op uit. Deze episode is een stuk korter. Dat is een goed teken toch?

Spintires Ep.2

https://www.youtube.com/watch?v=JelNs_Lnjjw

Sleuren met balken (Spintires) ep.1

Door chaozz op maandag 21 juli 2014 00:21 - Reacties (10)
Categorie: -, Views: 2.121

Spintires is een open wereld game zoals ik die nog niet eerder heb gespeeld. Het objective is simpel: Haal houten balken op van een bepaalde plek op de kaart, en breng deze naar een ander punt. Je gebuikt daarvoor ťťn van de vele trucks in de game.

Dat klinkt simpel, maar het terrein is bijna onbegaanbaar op sommige punten. Je komt geheid een keer ergens genadeloos vast te staan. Op dat soort momenten kun je jezelf soms nog lostakelen door je takel aan een stevige boom te bevestigen, maar veel leuker wordt het als je de game speelt in coop.

Dat leek mij en 3 vrienden in ieder geval. En dus trokken we onze Sovjet winterkleding aan en probeerden we samen het objective te halen (de derde vriend komt er in deel 2 bij!).

In deel 1 van deze serie doen we een eerste dappere poging de onherbergzame bagger van Rusland te bedwingen.

Spintires Ep.1

https://www.youtube.com/watch?v=Kf6eMRtou10

Using readable timestamps in SQL and PHP

Door chaozz op dinsdag 07 januari 2014 11:13 - Reacties (52)
Categorie: -, Views: 5.543

In a lot of cases you want to store timestamps in your database. There are a lot of ways and formats to do so, but the most commonly used method is using Unix Epoch format. I want to discuss an alternative.†Using readable timestamps in SQL and PHP.

Unix Epoch

Let's for example take the following date: the 5th of January 2014 at 01:39:12

In Unix Epoch this would be displayed as:†1388882352

This number is the number of seconds that passed since the 1st of January 1970 until the date mentioned above. While this is an efficient way of storing the date, it is useless unless you convert it into a readable date. But why not store it readable in the first place?

The readable alternative


PHP:

1
2
3
<?php
$date = new DateTime();
$now = $date->format('YmdHis');
echo $now;
?>


Using the same date mentioned above this would generate a date that looks like this: 20140105013912.

The format is: 4 year digits, 2 month digits, 2 day digits, 2 hour digits, 2 minute digits and 2 second digits. There you have it, a <em>readable</em> date.†

Advantages

Using this timestamp format has a number of advantages:
  • First and most important, if you are doing queries directly on your database, for example from a front-end like PhpMyAdmin, timestamps stored in this format are very readable. You can instantly see what date is being displayed.
  • Just like Unix Epoch, you can still do queries sorted by date.
  • Timestamps are still comparable. You can still do $past_date < $future_date, just like with Unix Epoch.
  • You can query periods really simple, using the LIKE function from SQL
Storage

For storage in a database it's best to use the field type BIGINT, which uses 8 bytes of storage. You could also use a VARCHAR(14) field, which is the exact size you need for this date format, but this would use 14 bytes for the date + 1 byte for storing the string length. Using BIGINT saves you 7 bytes per record over VARCHAR(14).

Example 1: order by date

I have a database table that stores when my cron jobs are ran. In the example below I queried my log to see when the last crons were ran. The query:


SQL:
1
SELECT * FROM log ORDER BY date DESC;


result: http://4techs.org/wp-cont...014/01/readable-dates.png

I can instantly see in the date field the last 2 minute-cron ran at 01:42:01 on the 5th of January 2014.

Example 2: compare dates

Comparing timestamps is very easy. Lets take for example the table called logs†from the screenshot above. If I want to see all the cron jobs that were ran after yesterday 16:00:00 I can simply use the query:


SQL:
1
SELECT * FROM log WHERE date > 20140104160000;


But as mentioned you can also query using the LIKE method. For example, if you want all the logs from February 2011, you simply query:


SQL:
1
SELECT * FROM log WHERE date LIKE '201102%';


With Unix Epoch you can subtract two timestamps and the result will be the difference in seconds between those dates. If you want the number of seconds between two timestamps in the readable format you can use the following code:

PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
Function SecondsDiff($fromtime$totime) {
 $from = strtotime($fromtime); // convert readable date to unix epoch
 $to = strtotime($totime);
 $diff = $to - $from;
 if ($diff < 0$diff = 0;
 return $diff;
}

$date = new DateTime();
$present = $date->format('YmdHis');
$date->modify('+10 minutes');
$future = $date->format('YmdHis');

$difference_in_seconds = SecondsDiff($present$future);
?>


Example 3: past and future timestamps

Something that is also useful is creating future or past timestamps. Let's say we have the following SQL table:

TABLE:
  • future_tasks
FIELDS:
  • id, INT(10), auto increment
  • type, VARCHAR(10)
  • date, BIGINT
The PHP script below inserts a task into the SQL table with a date set 10 minutes from the current date:

PHP:

1
2
3
4
5
<?php
$date = new DateTime();
$date->modify('+10 minutes');
$task_date = $date->format('YmdHis');

$result = msyqli_query ($link"INSERT INTO future_tasks (type, date) VALUES ('clear_log', $task_date)");
?>


Now let's write a cron job script that runs every minute to see if it needs to clear the log:

PHP:

1
2
3
4
5
6
7
<?php
$date = new DateTime();
$now = $date->format('YmdHis');
$result = mysqli_query ($link"SELECT id FROM future_tasks WHERE type = 'clear_log' AND date < $now");
// Clear the log here
$result = mysqli_query ($link"TRUNCATE TABLE log"); // clear the log efficiently
// delete task so the cron job will not be triggered again by past tasks
$result = mysqli_query ($link"DELETE FROM future_tasks WHERE type='clear_log' AND date < $now");
?>


I hope you find this useful for your SQL and PHP projects.

Video eerste dag Rust (Alpha)

Door chaozz op woensdag 18 december 2013 09:00 - Reacties (3)
Categorie: -, Views: 2.163

Naar aanleiding van mijn artikel over mijn bevindingen in de survival game Rust heb ik al mijn opgenomen footage van de eerste speeldag gecompileerd tot een 13 minuten durende gameplay video.

Daarin krijg je een goed beeld van hoe de game er op dit moment voor staat, maar ook hoe fout het meteen kan gaan in deze vijandige wereld. Het gaat eigenlijk al mis vanaf de eerste seconde.

Zie hoe we uitvinden hoe je omgaan met deze harde wereld en hoe we langzaam onze weg vinden, tot aan het bouwen van ons eigen huis.

Check de Youtube hier: http://tweakers.net/ext/f/I0BuUAGkttNl8Axir1Q3jgkJ/full.png

Eerste ervaring met Rust (Alpha)

Door chaozz op maandag 16 december 2013 15:36 - Reacties (6)
Categorie: -, Views: 2.131

Rust begon ooit als DayZ kloon en is een multiplayer survival game. Het is een soort mix van Minecraft, DayZ en S.T.A.L.K.E.R en wordt ontwikkeld door Facepunch Studios, de ontwikkelstudio van Garry Newman die vooral wereldfaam kreeg met de sandbox game Garry's Mod.†De game is momenteel in een vroeg Alpha stadium, maar dat heeft me er niet van weerhouden de game op Steam te kopen voor §18.

http://www.gamergy.nl/wp-content/uploads/2013/12/rust-torch-520x279.jpg

Het survival aspect in Rust is ongeveer hetzelfde als in Minecraft. Je begint met niets dan een steen, een fakkel en een medkit. Als je voor het eerste spawnt ben je naakt en sta je met een grote steen in je handen. Als je met die steen tegen een boom slaat krijg je hout. Mep je ermee tegen een steen krijg je stenen en ore. Van je eerste hout en stenen kun je een hatchet, een soort provisorische bijl craften. Dat moet Minecraft spelers allemaal toch bekend in de oren klinken.

En inderdaad, Ore kan uiteindelijk in een oven worden worden omgesmolten, wat in Minecraft een bed is, is in Rust een slaapzak. Waar je je slaapzak neerlegt daar kom je na je dood weer tot leven. Echter, een slaapzak kan ook worden vernietigd.

http://www.gamergy.nl/wp-content/uploads/2013/12/rust-axe-520x291.jpg

Craften speelt een belangrijke rol in deze game, maar Rust doet dat op een erg interessante manier. Je kunt als je voor het eerste inlogt op een server een redelijk aantal items craften, maar je kunt voorwerpen die je vindt via een Research Kit (die je eerst moet vinden) bestuderen en daarmee wordt dat item aan jouw lijst met craftbare items toegevoegd. Ook vind je zo nu en dan blauwdrukken, die ook zorgen voor nieuwe items.

Je volgende prioriteit is eten. Er lopen in Rust genoeg wilde dieren rond, maar ook schepsels waar je liever niet mee te maken krijgt. Zo zijn er in deze builds nog zombies, al heb ik gelezen dat deze wellicht worden verwijderd. Ik ga ze niet missen aangezien ze mijns inziens niet veel toevoegen aan de game. Maar er zijn ook beren en wolven die het je verdraait lastig kunnen maken. Een favoriet dier om te doden voor mij en een vriend waar ik deze game mee speel zijn boars, een soort zwijnen. Het fenomeen heet bij ons ondertussen "zwientje tik" en blijft erg vermakelijk. Het eerste dier dood je met je steen, maar al snel maak je een boog en pijlen en gaat het jagen een stuk simpeler. Een gedood dier geeft je vlees, vet en kledingmateriaal. Rauw vlees maakt je echter ziek en dus zul je van hout een kampvuur moeten maken om je vlees op te bakken.

http://www.gamergy.nl/wp-content/uploads/2013/12/rust-sun-520x292.jpg

Zo nu en dan vliegt er een vrachtvliegtuig over die pakketten dropt met erg schaarse goederen. Meteen erop af zou je zeggen. Maar nee, dit is geen handige actie.†Rust is namelijk een multiplayer game, en dit is waar de game grimmig wordt. Je komt geheid een keer andere spelers tegen. Sommigen zijn vriendelijk en roepen via de voicechat meteen dat ze geen ruzie willen. Anderen zullen je zonder pardon overhoop schieten omwille van jouw voorraad.

Om je enigszins te beschermen kun je, ŗ la Minecraft, een verblijfplaats craften. Muren, ramen, een plafond en deuren plaats je op een fundering. Binnen no time heb je een redelijk huisje staan, met een deur die alleen jij kunt openen. Echter, een houten deur kan met wat geduldig hakwerk worden verpulverd. Deuren van ijzer weerstaan dit geweld beter, maar zijn weer te forceren met explosieven. Daarnaast kan een indringer simpelweg een trap craften en via een open raam naar binnen komen. Het is dus zaak een beschutte en verlaten plek te vinden voor jouw onderkomen.

http://www.gamergy.nl/wp-content/uploads/2013/12/rust-house-520x292.jpg

Het is erg verleidelijk een onderkomen te zoeken in ťťn van de nederzettingen die je vind langs de 'hoofdweg' in de game. Deze nederzettingen hebben echter last van hoge stralingsniveau's. Deze straling verhoogt het gevoel dat je een ramp hebt overleefd, maar is ook een perfecte manier om te voorkomen dat iedereen massaal de nederzettingen gaat bezetten. Je gaat deze plaatsen alleen kort in om te zoeken naar resources, totdat het stralingsniveau te hoog wordt en je moet maken dat je daar weg komt.

Als je uitlogt van een Rust server valt jouw speler bewusteloos ter aarde. Als iemand met kwade bedoelingen jou vindt, kunnen ze je tijdens jouw 'slaap' doden en je rugtas plunderen. Offline zijn betekent dus niet veilig zijn. Soms vind ik midden in een grasveld per ongeluk een slaper. Eerlijkheid gebied me te zeggen dat ik die mensen meestal dood, maar dat is waar de game je toe dwingt. Gratis resources laat je gewoon niet liggen.

Ik begin ongemerkt steeds meer naar het genre (zombie) survival games te neigen. Dit viel me laatst op toen ik mijn desktop eens kritisch bekeek.

http://tweakers.net/ext/f/jHJFo8BHiWymXZSeEdKRkSp5/full.png

Rust voegt alle ingrediŽnten die ik tof vind aan dit soort games samen in een (semi-)realistische mix. De game is momenteel zoals gezegd nog in vroeg alpha stadium, en zo nu en dan komt er een update uit die inventories, skills en gebouwen weer zullen resetten. Ook is de game nog verre van gepolijst, werkt de inventorie wat omslachtig en hebben tools nu nog geen last van slijtage. Maar dat neem ik allemaal voor lief. Ik speel de game met erg veel plezier en draag via het forum van Facepunch hopelijk met bugreports en feature suggesties ook nog bij aan een beter eindproduct.

Ik hou jullie op de hoogte van mijn avonturen in Rust.

Meer info over Rust vind je hier. De alpha kopen kan hier.

Dit artikel is vanaf 18 december 2013 om 08:30 ook te vinden op Gamergy.