<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="https://jacek.zlydach.pl/blog/tags/compo-feed.xml" rel="self" type="application/rss+xml"/>
    <title>Posts tagged: Compo - Jacek Złydach - blog</title>
    <link>https://jacek.zlydach.pl/blog/tags/compo.html</link>
    <lastBuildDate>Tue, 25 Jan 2022 12:54:25 +0100</lastBuildDate>
    <description>Blog of Jacek Złydach - a programmer and science enthusiast.</description>
    <generator>Regenerate2</generator>
    <managingEditor>temporal.pl@gmail.com (Jacek Złydach)</managingEditor>
    <webMaster>temporal.pl@gmail.com (Jacek Złydach)</webMaster>
    <ttl>1440</ttl>
    <copyright>© 2017, 2018, 2019, 2020, 2021, 2022, Jacek Złydach</copyright>
    <item>
      <title>Cloze Call - postmortem</title>
      <link>https://jacek.zlydach.pl/blog/2010-05-13-cloze-call-postmortem.html</link>
      <guid isPermaLink="true">https://jacek.zlydach.pl/blog/2010-05-13-cloze-call-postmortem.html</guid>
      <pubDate>Thu, 13 May 2010 01:41:02 +0200</pubDate>
      <category domain="https://jacek.zlydach.pl/blog/tags/old-blog.html">Old blog</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/tworzenie-gier.html">Tworzenie gier</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/compo.html">Compo</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/lisp.html">Lisp</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/common-lisp.html">Common Lisp</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/cloze-call.html">Cloze Call</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/postmortem.html">postmortem</category>
      <description><![CDATA[<center><img src="old-blog/download/projects/ClozeCall/logotype.png" alt="Cloze Call"></center>
W końcu mój ostatni projekt - Cloze Call - doczekał się wpisu na blogu. Po sporej ilości zabaw udało mi się znaleźć popełniony błąd i ostatecznie przygotować <a href="projects.html#cloze-call">binarkę pod Windows'a</a>.

Po szczegóły, screeny, źródła i download - <strong><a href="projects.html#cloze-call">zapraszam na stronę projektu</a></strong>!

<strong>Postmortem</strong>

Jedną z sugestii na 2010LGDC było, by każdy na koniec napisał postmortem swojej gry. Poniżej zamieszczam tekst w oryginale (wzbogacony jedynie o linki i bez poprawiania błędów) - dla tych, którzy nie boją się czytać długiego tekstu po angielsku :).


Hi,

This is a postmortem for my 2010LGDC entry, called &quot;Cloze-Call&quot;. It derives its name from <a href="http://www.clozure.com/clozurecl.html">Clozure Common Lisp</a>, in which it was written (more on that topic in Section 2). It is also a reference to a phrase, &quot;close call&quot;, which means achieving something or escaping by a narrow margin, which corresponds to the ball maneuvering between planets.

The game itself is a very simple &quot;Gravity Pong&quot;. Your goal as a player is to shoot a ball into a hole. The ball must not collide with any of the planets that are on screen. To make things more fun, all planets attract the ball by means of gravity force.

<strong>1. What did I learn?</strong>
Common Lisp, first of all. It is my first real project in Lisp. I started learning this language in summer 2009, but (thanks to university) I didn't have much time to write some real programs.

Using <a href="http://en.wikipedia.org/wiki/Another_System_Definition_Facility">ASDF</a> - at least a little bit.

That my old design concept for Game State Manager code (which I used for years in at least three other languages) has flaws to get ????

<strong>2. What went right?</strong>
Setting up the environment. I am working on 32-bit Windows 7. Even though I had to try out <a href="http://sbcl.sourceforge.net/">SBCL</a> (which crashed on SDL examples), <a href="http://clisp.cons.org/">CLISP</a> (too slow), <a href="http://ecls.sourceforge.net/">ECL</a> (also too slow) and SBCL on Ubuntu before ending up with well-working <a href="http://code.google.com/p/lispbuilder/wiki/LispbuilderSDL">lispbuilsder-sdl</a> and Clozure Common Lisp, I am surprised that the installation and setting up process wasn't that complicated and things actually worked first-time. I spent two days before the Challenge on setting up <a href="http://www.libsdl.org/">SDL</a> and working environment.

Graphic Design. This project confirmed what I actually learned recently - it is important to sacrifice some time and get decent-looking graphics / media for your product (be it a game, or anything else) and make it look nice. I'd be very unhappy if this game had circles and squares instead of those pictures, which I found on <a href="http://opengameart.org/">OpenGameArt.org</a>.

Fixed-step physics. I am using <a href="http://www.gamedev.pl/articles.php?x=view&amp;id=370">and promoting</a> fixed time step approach to simulation in computer games, and it's the first time I really saw how good it is. During first physics test I had a fixed initial velocity vector for the ball, and I could see how it always travels the same path and lands in the same place.

The game. It isn't finished, but it is playable and has most of the game mechanics implemented. I had to cut down on features as I was running out of time, but I shipped.

<strong>3. What went wrong?</strong>
Transparency in SDL - I made some little voodoo and made planets use alpha channel, but the same trick didn't worked for any other image. I'm still confused why it's not working, and this phenomena is responsible for ugly Victory/Defeat screens.

Watching movies - I'd have at least few more hours to work on my game if I haven't found myself some stuff that I <a href="http://pl.wikipedia.org/wiki/Stargate_Universe">really</a>, <a href="http://pl.wikipedia.org/wiki/Fala_zbrodni">really</a> wanted to watch.

Bad naming conventions. I heard it's hard to give names to vector-math library functions. I done it wrong, and had to look for a bug for almost an hour. My vector math library that I wrote for this game had two kinds of functions - some were returning a new vector with the result of an operation, and some modified their arguments. In particular, I had (negative-vector) which returned a new vector representing inversed input parameter. The complimentary function was (negate-vector), which just negated its parameter. I used the latter instead of the former in physics code, and spent almost an hour trying to discover why graphics was flickering.

6 days instead of 7. If I were more careful and wrote 2010-04-01 23:59GMT+1 instead of 2010-04-01 00:00GMT+1, I'd have one more day to work. I found my mistake about a day after signing up and decided not to change my initial declaration.

<strong>4. What's lispy about my entry?</strong>
It is in Lisp :). It is not that common to see a game in Lisp :).

Few lambdas and high-order functions here and there. I think that my code is more like C++ with Lisp-syntax. But I guess, as for a first Lisp project, it's not that bad.

<strong>5. What interesting algorithms or designs did I use?</strong>
My good, old Game State Manager abstraction that I use everywhere. It simplified managing different game screens. Apart from that, I guess everything else is typical stuff you'll find in any computer game.



At first I wasn't sure if I want to take part in the Contest. I have lot of stuff to do at university (and other places as well), I don't know that much Common Lisp, ect. etd. But, I thought, it would be a good occasion to actually learn much Lisp in short time, and write another game. I decided to sacrifice some university lectures and now I'm happy I did it. I'd like to thank <a href="http://lispgamesdev.blogspot.com/">David O'Toole</a> for inviting me to #lispgames and encouraging me to take part in the Challenge. And I'd like to thank all of you #lispgames guys for support and nice time wasted (I should have been coding, not chatting :P) on IRC :).
]]></description>
    </item>    <item>
      <title>2010 Lisp Game Design Challenge - końcówka</title>
      <link>https://jacek.zlydach.pl/blog/2010-04-01-2010-lisp-game-design-challenge-koncowka.html</link>
      <guid isPermaLink="true">https://jacek.zlydach.pl/blog/2010-04-01-2010-lisp-game-design-challenge-koncowka.html</guid>
      <pubDate>Thu, 01 Apr 2010 01:04:37 +0200</pubDate>
      <category domain="https://jacek.zlydach.pl/blog/tags/old-blog.html">Old blog</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/tworzenie-gier.html">Tworzenie gier</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/compo.html">Compo</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/lisp.html">Lisp</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/common-lisp.html">Common Lisp</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/cloze-call.html">Cloze Call</category>
      <description><![CDATA[Konkurs <a href="http://www.cliki.net/LispGameDesignChallenge">2010 Lisp Game Design Challenge</a>, o którym <a href="blog/2010-03-20-2010-lisp-game-design-challenge.html">niedawno pisałem</a>, powoli dobiega końca. Ostatni zawodnicy kończą swoje prace; część z nich jest już dostępna do pogrania. Nie miałem jak dotąd czasu zagrać w żadną z nich, gdyż... przed chwilą skończyłem swoją własną. Mój projekt, zatytułowany <strong>Cloze Call</strong> (od Clozure Common Lisp, na którym pracowałem), jest już dostępny do pobrania w formie źródeł i zasobów (dla osób umiejących obsłużyć implementację Lispa) na stronie <a href="http://code.google.com/p/cloze-call/">Google Project Hosting</a>. Postaram się niedługo przygotować paczkę i binarki dla użytkowników Windowsa. Na razie pozwolę sobie zaprezentować screen z gry:
<center><a href="old-blog/download/projects/ClozeCall/screenshot.png"><img src="old-blog/download/projects/ClozeCall/screenshot-450.png" alt="Cloze Call - screen z rozgrywki"></a></center>

Wahałem się, czy wziąć udział w konkursie - przecież i tak jest sporo innych rzeczy na głowie. Teraz stwierdzam, że było warto. W czasie prac nad grą nauczyłem się bardzo wielu rzeczy o Lispie. I zaprzyjaźniłem się z <a href="http://pl.wikipedia.org/wiki/Emacs">Emacsem</a> :).
]]></description>
    </item>    <item>
      <title>2010 Lisp Game Design Challenge</title>
      <link>https://jacek.zlydach.pl/blog/2010-03-20-2010-lisp-game-design-challenge.html</link>
      <guid isPermaLink="true">https://jacek.zlydach.pl/blog/2010-03-20-2010-lisp-game-design-challenge.html</guid>
      <pubDate>Sat, 20 Mar 2010 18:29:20 +0100</pubDate>
      <category domain="https://jacek.zlydach.pl/blog/tags/old-blog.html">Old blog</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/tworzenie-gier.html">Tworzenie gier</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/compo.html">Compo</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/lisp.html">Lisp</category>
      <description><![CDATA[Przedwczoraj wystartował konkurs <strong>2010 Lisp Game Design Challenge</strong>. Zasady są bardzo proste - wystarczy zadeklarować termin startu, wziąć swojego ulubionego Lispa i zacząć klepać :). Zapisy i dodatkowe informacje znajdują się na <a href="http://dto.github.com/notebook/lgdc.html">stronie głównej</a> oraz <a href="http://www.cliki.net/LispGameDesignChallenge">stronie rejestracji</a>.

Osobiście poważnie zastanawiam się jeszcze nad wzięciem udziału. Jedynym sensownym terminem startu byłby 24 lub 25 marca. Pomimo tego, że uczelnia przyciska to jednak konkurs ten jest bardzo kuszącą propozycją :).
]]></description>
    </item>    <item>
      <title>3h Compo</title>
      <link>https://jacek.zlydach.pl/blog/2009-03-16-3h-compo.html</link>
      <guid isPermaLink="true">https://jacek.zlydach.pl/blog/2009-03-16-3h-compo.html</guid>
      <pubDate>Mon, 16 Mar 2009 21:00:53 +0100</pubDate>
      <category domain="https://jacek.zlydach.pl/blog/tags/old-blog.html">Old blog</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/tworzenie-gier.html">Tworzenie gier</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/java.html">Java</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/experiential-gameplay.html">experiential gameplay</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/uczucia.html">uczucia</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/compo.html">Compo</category>
      <category domain="https://jacek.zlydach.pl/blog/tags/algorytmy-stadne.html">algorytmy stadne</category>
      <description><![CDATA[Wczoraj (tj. w niedzielę, 15.03.2009) na <a href="http://gamedev.pl">Warsztacie</a> zorganizowano <a href="http://www.gamedev.pl/compo/news.php?x=view&amp;id=597">marcowe 3h compo</a>. Konkurs trwał od 17:00 do 20:00, a tematem było stworzenie gry, która zawiera zarówno krowę jak i świnię (<a href="http://forum.gamedev.pl/index.php/topic,10118.0.html">Szczegóły konkursu na forum Warsztatu)</a>.

Powiem szczerze, że pierwszy raz w życiu widziałem taką frekwencję - przysłano aż 28 prac. Większość z nich była grywalna, a niektóre były na prawdę godne podziwu.

Prace, które szczególnie mi się spodobały (kolejność alfabetyczna):
<ul>
	<li><a href="http://www.gamedev.pl/user.php?x=view&amp;id=1484">BrutalComputer</a> wyprodukował prostą, ale klimatyczną i wciągającą strzelankę.</li>
	<li><a href="http://gynvael.coldwind.pl/?id=168">Gynvael Coldwind</a> stworzył bardzo grywalnego Tower Defense.</li>
	<li>KK zaprezentował bardzo wciągającą, dynamiczną platformówkę z grafiką w stylu <a href="http://pl.wikipedia.org/wiki/ASCII-Art">ASCII-Art</a></li>
	<li><a href="http://www.maskl.cba.pl">Maskl</a> został autorem <a href="http://www.gry-online.pl/s016.asp?id=59">Commandosów</a> :) - gierka szalenie grywalna, spójna i klimatyczna.</li>
	<li><a href="http://www.mi-ku.net/?p=120">Mi-Ku</a> pokazał nam gierkę z zabawną fizyką :) .</li>
	<li><a href="http://regedit.gamedev.pl">Reg</a> napisał szalenie wciągający symulator hodowli. W nocy po Compo kilka osób grało w tę grę i ścigało się na dochody farmy :).</li>

</ul>

Na koniec kilka słów o mojej pracy. Można ją pobrać poniżej:
<a href="old-blog/download/projects/3hCompo_15.03.2009/final.zip">(link do gry)</a>.
Napisana została w Javie i LWJGL, powinna działać zarówno pod Windowsem jak i Linuksem. Dołączone są skrypty uruchamiające.

<center><a href="old-blog/download/projects/3hCompo_15.03.2009/screenshot.png"><img src="old-blog/download/projects/3hCompo_15.03.2009/screenshot_120px.jpg" alt="3h Compo - screen z gry"></a>
Screen z gry (kliknij aby powiększyć)</center>

Gra nie ma swojego tytułu. Gatunkiem klasyfikuje się do <a href="blog/2009-03-04-experiential-gameplay.html">experiential gameplay</a>. Gracz kieruje krową, która posiada emocje - główne uczucia to uczucie smutku / radości oraz zabawy / wściekłości (skutków tego ostatniego nie zdążyłem zaimplementować :( ). Są też stany pośrednie - krowa może być bardzo smutna, smutna, neutralna, wesoła lub bardzo wesoła. Równocześnie może być też rozbawiona gonieniem świnek ;) . Krowa, która włóczy się po pastwisku smutnieje z nudów - aby poprawić jej humor trzeba przejść na 'lepszą trawę'. Emocje krowy ilustrowane są przez grafikę twarzy.

Na planszy pojawia się też stado świń, kierowanych za pomocą prostego algorytmu stadnego. Uciekają one przed graczem, równocześnie starając się zachować spójność grupy, nie wpadać na siebie i dążyć do wspólnego celu znajdującego się niedaleko lewej krawędzi mapy.

Gra ta nie ma swojego celu - experiential gameplay tego nie wymaga. Ideą było zilustrowanie uczuć krowy, której humor zależy od tego gdzie się znajduje i co robi.
]]></description>
    </item>
  </channel>
</rss>