November 16, 2017

Lisp Adventures 4: Drawing in McCLIM (and a Snake Game)

The making of a snake game in McCLIM…

November 9, 2017

Lisp Adventures 3: Making Our Own McCLIM Application

In this video I go through the process of making something a little closer to a real-world application using McCLIM. More particularly, I use the text editor gadget to put together a simple, tab-enabled text editor.

November 2, 2017

Lisp Adventures 2: The McCLIM Demos

In which I poke around some of the example programs in McCLIM…

October 31, 2017

Lisp Adventures 1: Jeremiah Learns McCLIM

In which I begin making videos of myself playing around with programming languages for YouTube…

September 21, 2017

Casus part I: planning the game

Before jumping into writing a program, I like to have at least a general idea of where I’m going. The amount of detail depends on the particulars of a project, but I generally don’t start without at least some sort of goal. For my asteroid game, due to its simplicity, my pre-planning consisted essentially of “a spaceship will navigate around asteroids.” Casus, on the other hand, is intended to be a role-playing game with at least a few hours of playability. It therefore required a little more detail in its planning. The caveat is that these details may undergo significant changes during development, but they at least provide a general road map for development.

“Casus” is Latin for “the fall.” As mentioned, the game is originally going to be written in Latin; an English translation of the game will be provided on the App stores, but at a small price since I’d rather encourage use of the original game. This is an RPG taking place in a Latin-speaking world, and I think Latin is part of the uniqueness and charm of the game. (In any case, if you get through this blog series, you’ll probably be able to figure out what’s going on in the game!) The overall story goes thus:

Carathusiæ rex Matthæus, homo boni cordis non autem paucæ stultitiæ, populo bonam fortunam petens tulit inopiam. Jacobus magus regis debilitatem videns Matthæi fidem obtinuit regeque ignorante populum ad res novas egit. Ut rex exercitús mitteret ad regni finem ad bellum gerendum cum barbaris persuasit. Interea, scelerum grex a Jacobo convocatus est. Jurejurando accepto, gregales in palatium intraverunt regem necatum.

Regis autem uxor magorum erat artis perita, et cantamine maritum servavit. Grex qui non potuit regem necare in carcerem cum uxore ejecerunt. Regis reginæque vero filius a grege non inventus est nam servus regis cum infante egressus ex palatio procul puerum aluit. Die natali XVI pueri servus omnia eum docuit et puer novum facinus cœpit ad patres liberandos…

An English translation might be along these lines:

Matthew, king of Carathusia, was a good-hearted but incompetent man. He sought for the good of his people, but only managed to leave them in poverty. Jacob the sorceror saw the weakness of the king and obtained his trust. Meanwhile, unbeknownst to the king, he urged the people to insurrection. Jacob persuaded the king to send off his armies to the borders of the kingdom to fight with foreigners, while the sorcerer gathered a band of rogues and bound them in an oath to kill the king.

The king’s wife was also skilled in sorcery, and protected her husband with a spell. The band realized that the king could not be killed and threw him and his wife into the dungeon instead. The king and queen, however, had a son who was not found by the conspirators. A servant of the king absconded from the palace with the infant and carried him to a faraway place. On the boy’s sixteenth birthday, the servant recounted the events to the boy, who then began a new undertaking to free his parents…

I love JRPGs, and the Dragon Quest series in particular, and I took some inspiration from the original Dragon Quest (“Dragon Warrior” on my NES) game. Nonetheless, I decided to follow more closely RPGs such as Ultima and Wizardry. In particular, the plan is to have some amount of player control over character creation and development.

Upon starting a new game, the player will be able to set up some initial character attributes. At least, the player will enter a name and select a profession. Currently contemplated professions are eques/caballarius (“knight”; probably “eques” will be the term in the game, but the medieval term “caballarius” is being considered); magus (“sorcerer”); fur (“thief”); monachus (“monk”); and scelus (“rogue”). The profession will determine the avatar and initial attributes, but the player will be able to develop the character in different ways during the game.

The planned character attributes are common in the RPG world; they’ll be in English from now since they’re not made up from scratch but a part of the generic makeup of RPGs: hit points; magic points; strength; defense; agility; intelligence; alignment; and experience (which may be connected to a level). The player will also have a quantity of aureum (gold) or pecunia (money) in order to buy and sell with NPCs. Alignment can be good or evil; the eques and monachus start out with “good” alignment, fur and scelus start out as “evil,” and magus can go either way. The alignment is expected to have certain in-game effects. For example, it is planned that an “evil” character will not be permitted to trade with merchants, but fures (thieves), instead of attacking, will offer to trade with the player.

Weapons include the baculum (stick), clava (club), pugio (dagger), gladius (short sword), and spatha (long sword).

Armor includes lorica hamata (chain mail), lorica squamata (scale armor), and lorica squamata (segmented armor). Additionally, there are ocreæ (metal greaves), manicæ (gauntlets), caligæ (boots), and the galea and cassis (leather helmet and metal helmet, respectively). Shield options include the scutum (leather-covered wooden shield) and the clipeus (metal shield).

A number of magic spells are planned to be available to the player, including sanare (heal), nocere (hurt), curare (a stronger heal spell), lædere (a stronger hurt spell), debilitare (weaken), terrere (terrify), firmare (strengthen), and necare (kill; i.e. “Avada Kedavra”).

Enemies include the mus (mouse or rat), vespertilio (bat), vipera (snake), fur (thief), miles (footsoldier), spectrum (ghost), venefica (witch), veneficus (warlock), cyclops (hopefully you know this one), versipellis (werewolf), draco (dragon), and gorgo (gorgon/Medusa). This list is apart from Jacobus and possible other bosses.

There will be a number of kingdoms other than Carathusia (at least three), each with its own castle and two or more towns. Indeed, the player will start outside of Carathusia, away from the notice of the sorceror Jacobus. The player will have the opportunity, if he or she so desires, to visit each of the other kingdoms and seek the support of their kings before going up against Jacobus.

In the game, there will be three general location types: the overworld, in a top-down perspective; the towns, also in a top-down perspective; and dungeons, currently planned to be done in a 3D perspective. The 3D perspective of the dungeons Ultima and Wizardry will be updated somewhat with a nicer appearance, but I’m not an artist and don’t have a large budget, so don’t expect the Legend of Grimrock here. One side of me does want to change the plans somewhat and use 2D procedurally generated dungeons in the spirit of Nethack. These plans are guidelines, not set in stone. We’ll see what happens. In either case, the dungeons will provide ample opportunity for the grind, allowing the player to level up before fighting bosses.

With the above in mind, I began writing some code to try out displaying a map for the character to wander around. This served as sort of a “proof of concept” for the overworld. The next blog post will discuss the initial steps.

September 14, 2017

Asteroid Belt

Recently, instead of paying attention in Constitutional Law class I sloppily slapped together a simple game in order to reacquaint myself with the LibGDX framework. The result is a game of dodging and shooting relatively slow-moving asteroids.

I threw the game up (as a free app) on the Google Play Store and the Amazon App Store (the latter is an affiliate link, FYI). One of the draws of LibGDX is that it supports various platforms, one of which is Javascript/HTML5 using Google Web Toolkit. Because of this, you can also play “Asteroid Belt” online (left and right arrows move; spacebar shoots).

The “Asteroid Belt” game was preliminary practice in anticipation of a more ambitious project. This new project is a western-style computer RPG in the tradition of “Ultima” and “Wizardry.” The current plan is for the game itself, called “Casus,” to be available as a free download on Google Play and Amazon, but with the twist that it will be in Latin. An English version (perhaps eventually localized with other languages) will be available for a small price.

I’m a huge fan of free (in the GNU sense) software, so I would like to eventually provide Casus under the GPL. Nonetheless, I would like app store exclusivity for my games for at least a certain amount of time. I’m trying to figure out the best way to work this out. One option is an initial release as a proprietary app, and a later GPL release. Another is releasing the source code under the GPL from the start, but using a restrictive license for the assets (graphics, sound, possibly story line), at least initially.

For now, expect some upcoming blog posts discussing the development of the forthcoming game…

August 16, 2017

Oración por convenio

Aquí se encuentran unas traducciones deprisa y no oficiales de unos documentos del sitio web de Denver Snuffer. Tratan de una nueva versión de las escrituras por un grupo que espera recibir, con otros de creencias similares, un convenio con Dios en una conferencia en Septiembre de este año, 2017. Por lo menos, da una vista a cosas interesantes que están pasando en el mormonismo hoy en día…



Si alguien desea preparar una mejor traducción, puedo proveer versiones editables de los documentos. (Pero no siempre veo todos mis email, pues si no contesto dentro de 48 horas, mándamelo otra vez.)

July 22, 2017

Liber Mormonis pars II

Procedemus de Hierosoymæ statu et Nephi patre legentes:

Nam factum est, primi in pricipio anni regni Sedeciæ, Judææ regis (patre meo per totam ætatem Hierosolymis incolenti), et eodem anno advenerunt vates plurimi vaticantes ad populum se corrigendum esse nisi magna periret civitas Hierosolyma. Pater igitur meus Lehi egrediens Dominum rogavit etiam omne corde pro populo suo.

Vidimus hinc Deum non mittere vates singulos sed pluribus monet populum suum et advocat ad emendatam vitam propter quod dixit Amos: “Non facit enim Dominus Jova quicquam, quin arcanum suum servis suis vatibus patefaciat.” Ne pereat Hierosolyma, tanta humanitate pro populo rogat Lehi, cujus nomen Hebraicum “Maxilla” significat nam sicut maxilla in manu Samsonis erit instrumentum in manu Dei ad salvationem multorum, ut Deus eum convenit, quod mox videbimus.

February 22, 2017

La visión de Lehi

Nefi, en el principio de su relato, cuenta que “llegaron muchos profetas … profetizando al pueblo que se arrepintiera, o la gran ciudad de Jerusalén sería destruida”(1 Nefi 1:4). Dice que “por tanto”, o sea, por haber escuchado los profetas, “mientras iba por su camino, mi padre Lehi oró al Señor, sí, con todo su corazón, a favor de su pueblo” (1 Nefi 1:5). Lehi, entonces, recibió un mensaje y lo creyó al grado que acudió al Señor y ejerció la caridad. Lehi no parece haber sido una persona con autoridad eclesiástica, ni tampoco uno de los profetas que andaban proclamando el arrepentimiento en aquel momento. Era una persona normal, sin posición en la iglesia. No obstante, el resultado de su fe fue impresionante y cambió su vida.

Y occurió que mientras estaba orando al Señor, apareció ante él, sobre una roca, un pilar de fuego; y fue mucho lo que vio y oyó; y se estremeció y tembló extremadamente por las cosas que vio y oyó. Y sucedió que volvió a su casa en Jerusalén, y se echó sobre su lecho, dominado por el Espíritu y por las cosas que había visto. (1 Nefi 1:6-7).

Tuvo una visión “mientras estaba orando.” No había terminado y el Señor ya vino con una respuesta, con “un pilar de fuego”, o, en otras palabras, una columna de luz. Vio cosas que le preocuparon, y llegó a casa y, agotado por la experiencia, pero lleno del Espíritu, se acostó pensando en lo que había visto. Entonces tuvo otra visión — o, lo que es más probable, se le repitió la visión que había visto, como pasó a José Smith con el ángel que le informó sobre el Libro de Mormón. Entonces, debes considerar que en el sexto versículo hay una gran visión que una persona normal y hasta aquel momento sin gran importancia en el mundo recibió. En el octavo versículo, explica que esa persona normal vio a Dios mismo:

Y dominado de esta manera por el Espíritu, fue arrebatado en una visión, en la que vio abrirse los cielos, y creyó ver a Dios sentado en su trono, rodeado de innumerables concursos de ángeles, en actitud de estar cantando y alabando a su Dios. (1 Nefi 1:8).

Si puede pasar a una persona cualquiera, te puede pasar también a ti. Eso es el mensaje grabado en la vida de José Smith. Eso es el mensaje del Libro de Mormón, ahí desde su primer capítulo. Jeremías el profeta vivía en aquellos días, pero Dios no pensó que dar autoridad a otro quitaría la autoridad del primero. No hay indicación que los profetas antigüos eran celosos con sus revelaciones; mas bien, querían que todos fueran profetas y poseyeran la misma autoridad de compartir lo que hayan recibido. Por ejemplo:

Y habían quedado en el campamento dos hombres, uno llamado Eldad y el otro Medad, sobre los cuales también reposó el espíritu; estaban estos entre los inscritos, pero no habían ido al tabernáculo; y profetizaron en el campamento. Y corrió un joven y dio aviso a Moisés, y dijo: Eldad y Medad profetizan en el campamento. Entonces respondió Josué hijo de Nun, ayudante de Moisés desde su juventud, y dijo: Señor mío Moisés, impídeselo. Y Moisés le respondió: ¿Tienes tú celos por mí? ¡Ojalá que todos los del pueblo de Jehová fuesen profetas, que Jehová pusiera su espíritu sobre ellos! (Números 11:26-29).

El Señor no le quitaba nada a Jeremías cuando dio otra dispensación a Lehi. No es una competencia en que uno se arroga para si la autoridad de ejercer dominio sobre los demás en virtud de su posesión del sacerdocio. Él que desea excluir a los demás, ya ha perdido su sacerdocio (véase Doctrina y Convenios 121:34-37). A todos se les concede la oportunidad de recibir directamente del Señor, y el que se interpone como intermediario es anticristo. Jesús dijo de tales: “¡Ay de vosotros, intérpretes de la ley!, porque habéis quitado la llave de la ciencia; vosotros mismos no entrasteis, y a los que entraban se lo impedisteis.” Ten cuidado de los que afirman tener “llaves” que les permite interponerse entre tú y Dios para que no puedas formar una relación con el Señor sin ellos. Tales personas no entran a “la ciencia” — el conocimiento de Dios — y te impedirán, pero solamente si dejas que lo hagan.

Entonces, regresamos con Lehi:

Y sucedió que vio a Uno que descendía del cielo, y vio que su resplandor era mayor que el del sol al mediodía. Y vio también que lo seguían otros doce, cuyo brillo excedía al de las estrellas del firmamento. Y descendieron y avanzaron por la faz de la tierra; y el primero llegó hasta donde estaba mi padre, y le dio un libro y le mandó que lo leyera. (1 Nefi 1:9-11).

Hay muchísimo en estos versículos. Nefi estaba escribiendo sobre planchas de metal, y tenía recursos limitados. Por lo tanto, puso tanta información en la mínima cantidad de palabras posible. Pero Uno, cuyo resplandor era mayor que el sol, descendía con otros doce, y andaban en la tierra. Eso sugiere que Lehi vio en su visión la vida mortal de Jesucristo y sus apóstoles. Por lo tanto, después “dio testimonio de que las cosas que había visto y oído … manifestaban claramente la venida de un Mesías y también la redención del mundo” (1 Nefi 1:19).

Tú también puedes tener estas experiencias. Por eso están escritas en las escrituras. Seguiremos viendo más adelante los detalles de como podemos seguir el mismo camino y obtener las mismas bendiciones, incluyendo una visita con el Señor, como se nos promete en Doctrina y Convenios 93:1. No hagas caso a las personas que te dirán que aquellas bendiciones son reservadas para líderes religiosos. Son para ti. Ten fe, acércate al Señor, y recibe lo que te ofrece.

October 26, 2016

Liber Mormonis pars I

Mormonis Librum in Latinum transfero cum interpretatione quæ interpretatio verbis meis cogitationibus tenetur. Ex editione anno Domini millesimo octingentesimo trigesimo edita legemus:

Ego, Nephi, bonis parentibus natus, doctus ergo aliquantum sum patris mei omne in scientia; et ætate mea multas contristationes passus, Domini tamen dilectus per totam ætatem meam, scientia etiam magna Dei benevolentiæ mysteriorumque possessa, faciam igitur vitæ meæ gestorum historiam. Et historiam patris lingua facio, quæ tenetur Judæorum scientia Ægyptorumque lingua. Et scio historiam quam facio veram esse; eamque facio mea manu eamque secundum scientiam meam facio.

Nephi incipit historiam suam facere scribens se bonorum parentum filium, qui tribulationes vidit, qui Dei delectus est, qui possidet Dei benevolentiam mysteria. Quæro ego: Quæ sunt mysteria? Suntne ritus arcani vel scientia arcana? Et quid est scientia Judæorum? De Pentateucho loquitur, aut de re alia? Sine dubio omnia mox revelabitur in verbís et capitibus proximis.